Pourquoi le Borg pattern est-il meilleur que le Singleton pattern?Pourquoi le motif Borg est-il meilleur que le motif Singleton en Python?
Je demande parce que je ne les vois pas ce qui en résulte quelque chose de différent.
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()
Ce que je veux montrer ici est que l'objet de service, que ce soit mis en œuvre comme Borg ou Singleton, a un état interne non négligeable (il fournit quelques service basé dessus) (je veux dire que ça doit être quelque chose d'utile ce n'est pas un Singleton/Borg juste pour s'amuser).
Et cet état doit être initialisé. Ici, l'implémentation de Singleton est plus simple, puisque nous traitons init comme la mise en place de l'état global. Je trouve bizarre que l'objet Borg doive interroger son état interne pour voir s'il devrait se mettre à jour.
Plus l'état interne est dégradé, plus la dégradation est importante. Par exemple, si l'objet doit écouter le signal de démontage de l'application pour enregistrer son registre sur le disque, cet enregistrement ne doit être effectué qu'une seule fois, ce qui est plus facile avec un singleton.
Motif de Borg?^_^J'avais d'abord entendu parler de cela comme http://c2.com/cgi/wiki?MonostatePattern –
Monostate? Nous sommes les Martellis. Nous disons Borg. – u0b34a0f6ae