设计模式 - 6.代理模式 [结构型模式]
2020-03-25 本文已影响0人
Zszen
大纲 | 小结 |
---|---|
基础准则 | 基础准则 |
创建型模式 | 单例模式 |
- | 原型模式 |
- | 简单工厂模式 |
- | 抽象工厂模式 |
- | 建造者模式 |
结构型模式 | 代理模式 |
- | 适配器模式 |
- | 桥接模式 |
- | 装饰器模式 |
- | 门面/外观模式 |
- | 享元模式 |
- | 组合模式 |
行为型模式 | 模板方法模式 |
- | 策略模式 |
- | 命令模式 |
- | 职责链模式 |
- | 状态模式 |
- | 观察者模式 |
- | 中介者模式 |
- | 迭代器模式 |
- | 访问者模式 |
- | 备忘录模式 |
- | 解释器模式 |
在你同学出去打架之前一定要告诉老师
![](https://img.haomeiwen.com/i2068504/4ecab955cc6252a8.jpg)
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
代理模式的主要优点有:
代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
代理对象可以扩展目标对象的功能;
代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;
其主要缺点是:
在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
增加了系统的复杂度;
import abc
class ICreator(metaclass=abc.ABCMeta):
@abc.abstractmethod
def create(self):
pass
class Creator(ICreator):
def create(self):
print('do sth func')
class Creator_Proxty(ICreator):
def __init__(self):
# super().__init__()
self.real_creator = Creator()
def create(self):
self.pre_create()
self.real_creator.create()
def pre_create(self):
print('do sth before create')
if __name__ == '__main__':
a = Creator()
a.create()
a = Creator_Proxty()
a.create()
代理模式可以对当前对象进行功能扩展