Почему шаблон Борг лучше, чем шаблон Синглтон в Python
ПочемуШаблон Борг лучше чемСинглтон?
Я спрашиваю, потому что я неЯ не вижу их в результате чего-то другого.
Борг:
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 должен запросить свое внутреннее состояние, чтобы увидеть, должен ли он обновляться сам.
Это становится хуже, чем больше у вас внутреннего состояния. Например, если объект должен слушать приложениеs сигнал разрыва, чтобы сохранить свой регистр на диск, что регистрация должна быть сделана только один раз, и это проще с Singleton.