Python设计模式 之 Borg模式

class Borg:
    __common_state = {}

    def __new__(cls, *args, **kwargs):
        instance = super().__new__(cls, *args, **kwargs)
        instance.__dict__ = Borg.__common_state
        return instance

Borg模式 是单例模式在python中的变种。传统单例模式在python中,存在继承兄弟类之间状态隔离的问题。

Bory模式 将全部实例,与子类的全部实例。共用同一个__ dict __。这样保证了所有实例状态的一致性。这同样属于单例模式的理念

class BorgChild(Borg):
    pass


class BorgChildTwo(Borg):
    pass


if __name__ == '__main__':
    father = Borg()
    child = BorgChild()
    child2 = BorgChildTwo()

    child.a = 10
    print(child.a)
    print(child2.a)
    print(father.a)

10
10
10
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工作时间一长,需求多而杂,往往难得有时间去仔细思量代码如何写的更加优雅,习惯使然。设计模式本身不是一个神秘的东西,...
    __七把刀__阅读 5,020评论 0 5
  • python的函数参数传递 看两个例子: 所有变量都可以理解为内存中一个对象的“引用”,或者,可以看做C中的vio...
    marvinxu阅读 11,113评论 2 30
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 8,189评论 0 15
  • 参考文献: 《大话设计模式》——吴强 《Python设计模式》——pythontip.com 《23种设计模式》—...
    梁林張斌阅读 6,791评论 0 4
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 9,770评论 0 13