¿Por qué el patrón Borg es mejor que el patrón Singleton en Python?

Porque es elPatrón de Borg mejor que elPatrón de singleton?

Lo pregunto porque no los veo resultando en nada 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()

Semifallo:

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 implementado como Borg o Singleton, tiene un estado interno no trivial (proporciona algún servicio basado en él) (quiero decir que tiene que ser algo útil, no es un Singleton / Borg solo para divertido).

Y este estado tiene que ser initado. Aquí la implementación de Singleton es más sencilla, ya que tratamosen eso como la puesta en marcha del estado global. Me parece 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 sea el estado. Por ejemplo, si el objeto tiene que escuchar la señal de desmontaje de la aplicación para guardar su registro en el disco, ese registro solo debe hacerse una vez, y esto es más fácil con un Singleton.

Respuestas a la pregunta(6)

Su respuesta a la pregunta