Почему шаблон Борг лучше, чем шаблон Синглтон в 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.

Ответы на вопрос(6)

Ваш ответ на вопрос