为什么Borg模式比Singleton模式更好?
我问是因为我看不到它们会导致任何不同。
博格:
class Borg:
__shared_state = {}
# init internal state variables here
__register = {}
def __init__(self):
self.__dict__ = self.__shared_state
if not self.__register:
self._init_default_register()
单身人士:
class Singleton:
def __init__(self):
# init internal state variables here
self.__register = {}
self._init_default_register()
# singleton mechanics external to class, for example this in the module
Singleton = Singleton()
我想在这里显示的是,服务对象,无论是实现为Borg还是Singleton,都具有不平凡的内部状态(它基于该状态提供一些服务)(我的意思是它必须是有用的东西,而不仅仅是Singleton / Borg好玩)。
而这种状态必须被初始化。这里的Singleton实现更为简单,因为我们将init视为全局状态的设置。我发现Borg对象必须查询其内部状态以查看是否应该更新自身很尴尬。
内部状态越多,情况就越糟。例如,如果对象必须侦听应用程序的拆除信号以将其寄存器保存到磁盘,则该注册也应仅执行一次,并且使用Singleton会更容易。
慕妹3242003
哆啦的时光机
收到一只叮咚
相关分类