Я спрашиваю, потому что не вижу, чтобы они приводили к чему-то другому.
Борг:
Код: Выделить всё
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()
И это состояние должно быть инициализировано. Здесь реализация Singleton более проста, поскольку мы рассматриваем init как настройку глобального состояния. Мне кажется неудобным, что объекту Борга приходится запрашивать свое внутреннее состояние, чтобы узнать, должен ли он обновиться.
Чем больше у вас внутреннего состояния, тем хуже. Например, если объект должен прослушивать сигнал удаления приложения, чтобы сохранить свой регистр на диск, эту регистрацию также следует выполнить только один раз, и это проще сделать с помощью синглтона.
Подробнее здесь: https://stackoverflow.com/questions/131 ... -in-python