可以慢慢理解。。
对照JAVA

class Singleton(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(Singleton, cls).__new__(cls) return cls.instance s = Singleton() print("Object created", s, id(s)) s1 = Singleton() print("Object created", s1, id(s1)) class SingletonA: __instance = None def __init__(self): if not SingletonA.__instance: print("__init__ method called..") else: print("Instance already created:", self.getInstance()) @classmethod def getInstance(cls): if not cls.__instance: cls.__instance = SingletonA() return cls.__instance s = SingletonA() print("Object created", SingletonA.getInstance()) s = SingletonA() class Borg: __shared_state = {"1": "2"} def __init__(self): self.x = 1 self.__dict__ = self.__shared_state pass b = Borg() b1 = Borg() b.x = 4 print("Borg Object 'b':", b) print("Borg Object 'b1':", b1) print("Object State 'b':", b.__dict__) print("Object State 'b1':", b1.__dict__) class BorgA: _shared_state = {"1": "2"} def __new__(cls, *args, **kwargs): obj = super(BorgA, cls).__new__(cls, *args, **kwargs) obj.__dict__ = cls._shared_state return obj b = BorgA() b1 = BorgA() b.x = 4 print("BorgA Object 'b':", b) print("BorgA Object 'b1':", b1) print("Object State 'b':", b.__dict__) print("Object State 'b1':", b1.__dict__)

本文通过Python代码示例介绍了两种设计模式:单例模式和Borg模式。单例模式确保一个类只有一个实例,并提供全局访问点;而Borg模式则确保所有实例共享相同的状态。文中还对比了两种模式的不同之处。
217

被折叠的 条评论
为什么被折叠?



