Perché lo Borg pattern è migliore dello Singleton pattern?Perché il pattern Borg è migliore del pattern Singleton in Python
Chiedo perché non li vedo risultando in qualcosa di diverso.
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()
Quello che voglio per visualizzare qui è che l'oggetto del servizio, se implementato come Borg o Singleton, ha uno stato interno non banale (fornisce alcune servizio basato su di esso) (Voglio dire che deve essere qualcosa di utile non è un Singleton/Borg solo per divertimento).
E questo stato deve essere inserito. Qui l'implementazione di Singleton è più semplice, poiché trattiamo lo init come impostazione dello stato globale. Trovo scomodo che l'oggetto Borg debba interrogare il suo stato interno per vedere se dovrebbe aggiornarsi.
Diventa peggio lo stato interno che hai. Ad esempio, se l'oggetto deve ascoltare il segnale di teardown dell'applicazione per salvare il suo registro su disco, tale registrazione deve essere eseguita solo una volta, e questo è più semplice con un Singleton.
Modello Borg?^_^L'ho sentito per la prima volta come http://c2.com/cgi/wiki?MonostatePattern –
Monostate? Noi siamo i Martellis. Diciamo Borg. – u0b34a0f6ae