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

И это состояние должно быть инициировано. Здесь реализация Singleton более проста, так как мыв этом как установка глобального государства. Я нахожу неловким, что объект Borg должен запросить свое внутреннее состояние, чтобы увидеть, должен ли он обновляться сам.

Это становится хуже, чем больше у вас внутреннего состояния. Например, если объект должен прослушивать сигнал разрыва Приложения, чтобы сохранить свой регистр на диск, эту регистрацию также следует выполнить только один раз, и это проще сделать с помощью Singleton.

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

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