时间:2021-05-22
代理模式
Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供'代理'的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介
你先设想:一个对象提供rgb三种颜色值,我想获得一个对象的rgb三种颜色,但是我不想让你获得蓝色属性,怎么办?
class Proxy(object): def __init__(self, subject): self.__subject = subject # 代理其实本质上就是属性的委托 def __getattr__(self, name): return getattr(self.__subject, name)class RGB: def __init__(self, red, green, blue): self.__red = red self.__green = green self.__blue = blue def Red(self): return self.__red def Green(self): return self.__green def Blue(self): return self.__blueclass NoBlueProxy(Proxy): # 我在这个子代理类拦截了blue的访问,这样就不会返回被代理的类的Blue属性 def Blue(self): return 0if __name__ == '__main__': rgb = RGB(100, 192, 240) print rgb.Red() proxy = Proxy(rgb) print proxy.Green() noblue = NoBlueProxy(rgb) print noblue.Green() print noblue.Blue()抽象工厂模式
和简单工厂/工厂方法不同,抽象工厂可能最好理解,举个例子:
比如2个动物,猫和狗,他们都有speak和eat的function,但是很明显他们执行的结果是不同的 有个'工厂'(抽象工厂里面一个类型就是一个工厂,这点和其他模式的不同)专门帮助我们找到对应的动物做正确的操作 有个类/函数可以通过参数帮助我们找到上面的这个工厂 这就是抽象工厂
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python设计模式之抽象工厂模式原理与用法。分享给大家供大家参考,具体如下:抽象工厂模式(AbstractFactoryPattern):提供一
本文实例讲述了javascript设计模式–抽象工厂模式原理与应用。分享给大家供大家参考,具体如下:介绍:基于工厂模式,继续升级。来解决工厂模式存在多个工厂类的
前言在《设计模式》一书中工厂模式提到了:工厂方法模式(FactoryMethod)抽象工厂模式(AbstractFactory)但是在实际过程中还有一种工厂模式
本文实例讲述了java设计模式之工厂模式。分享给大家供大家参考,具体如下:工厂模式(factory)涉及到4个角色:抽象工厂类角色,具体工厂类角色,抽象产品类角
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升