¿Por qué el Borg pattern es mejor que el Singleton pattern?¿Por qué el patrón de Borg es mejor que el patrón de Singleton en Python?
Lo pido porque no los veo dando como resultado algo diferente.
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()
Lo que quiero mostrar aquí es que el objeto de servicio, ya sea implementada como Borg o Singleton, tiene un estado interno no trivial (que proporciona una cierta servicio basado en él) (me refiero a que tiene que ser algo útil, no es un Singleton/Borg solo por diversión).
Y este estado tiene que ser inited. Aquí la implementación de Singleton es más sencilla, ya que tratamos init como la configuración del estado global. Me resulta incómodo que el objeto Borg tenga que consultar su estado interno para ver si debería actualizarse.
Se vuelve peor cuanto más interno se encuentre. Por ejemplo, si el objeto tiene que escuchar la señal de corte de la Aplicación para guardar su registro en el disco, ese registro solo debe hacerse una vez también, y esto es más fácil con un Singleton.
Borg pattern?^_^Había oído hablar de él por primera vez como http://c2.com/cgi/wiki?MonostatePattern –
Monostate? Somos los Martellis. Decimos Borg. – u0b34a0f6ae