Dlaczego Borg pattern jest lepszy niż Singleton pattern?Dlaczego wzór Borg jest lepszy niż wzór Singleton w Pythonie
Pytam, ponieważ ich nie widzę, co prowadzi do czegoś innego.
Borg:
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()
Singleton:
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()
Co chcę, aby wyświetlić o to, że przedmiot usługi, czy zaimplementowane jako Borg lub Singleton, posiada nietrywialne stany wewnętrzne (to zapewnia jedne usługa oparta na tym) (mam na myśli, że musi to być coś pożytecznego, to nie jest Singleton/Borg tylko dla zabawy).
I ten stan musi zostać zainicjowany. Tutaj implementacja Singletona jest prostsza, ponieważ traktujemy init jako konfigurację stanu globalnego. Uważam to za niezręczne, że obiekt Borg musi sprawdzać swój stan wewnętrzny, aby sprawdzić, czy powinien sam się zaktualizować.
Coraz gorzej, im bardziej masz wewnętrzny stan. Na przykład, jeśli obiekt musi słuchać sygnału utraty aplikacji, aby zapisać swój rejestr na dysku, rejestracja ta powinna być wykonana tylko raz, a to jest łatwiejsze z Singletonem.
Wzór Borg?^_^Najpierw usłyszałem o tym jako http://c2.com/cgi/wiki?MonostatePattern –
Monostate? Jesteśmy Martellis. Mówimy Borg. – u0b34a0f6ae