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

你可能感兴趣的:(Python设计模式 之 Borg模式)