Почему паттерн Борг лучше паттерна Синглтон в PythonPython

Программы на Python
Anonymous
Почему паттерн Борг лучше паттерна Синглтон в Python

Сообщение Anonymous »

Почему паттерн Борг лучше паттерна Синглтон?
Я спрашиваю, потому что не вижу, чтобы они приводили к чему-то другому.
Борг:

Код: Выделить всё

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 более проста, поскольку мы рассматриваем init как настройку глобального состояния. Мне кажется неудобным, что объекту Борга приходится запрашивать свое внутреннее состояние, чтобы узнать, должен ли он обновиться.
Чем больше у вас внутреннего состояния, тем хуже. Например, если объект должен прослушивать сигнал удаления приложения, чтобы сохранить свой регистр на диск, эту регистрацию также следует выполнить только один раз, и это проще сделать с помощью синглтона.

Подробнее здесь: https://stackoverflow.com/questions/131 ... -in-python

Вернуться в «Python»