364 votos

En Design Patterns: Cuándo utilizar el Singleton?

La variable global glorificado - se convierte en una clase mundial glorificado. Algunos dicen ruptura Object Oriented Design.

Dame escenarios, aparte del buen registrador de edad donde tiene sentido utilizar el singleton.

312voto

CodingWithoutComments Puntos 9412

En mi búsqueda de la verdad, descubrí que, en realidad, hay muy pocos "aceptable" razones para la utilización de un Singleton.

Una razón por la que tiende a subir una y otra vez en la web del congreso es la de un "registro" de la clase (que usted ha mencionado). En este caso, un Singleton puede ser utilizado en lugar de una única instancia de una clase, ya que un registro de clase, por lo general debe ser utilizado una y otra vez hasta la saciedad por cada clase en un proyecto. Si cada clase utiliza este registro de clase, la inyección de dependencia se vuelve engorroso.

El registro es un ejemplo concreto de un "aceptable" Singleton porque no afecta a la ejecución de su código. Deshabilitar el registro, la ejecución de código sigue siendo el mismo. Habilitar mismo. Misko lo pone de la siguiente manera en la Raíz de la Causa de los embarazos Únicos, "La información que aquí fluye de una manera: a partir De su aplicación en el registrador. Aunque los madereros son el estado global, ya que no hay flujos de información de los registradores en su aplicación, los madereros son aceptables."

Estoy seguro de que hay otras razones válidas también. Alex Miller, en "Patrones de Odio", habla de servicio de localizadores y cliente de la interfaz de usuario también está siendo posiblemente "aceptable" de las opciones.

Leer más en Singleton te amo, pero tú eres la que me trae abajo.

107voto

metao Puntos 1555

Un Singleton candidato debe satisfacer tres requisitos:

  • controles simultáneas de acceso a un recurso compartido.
  • el acceso a los recursos deberá ser solicitada desde múltiples, dispares partes del sistema.
  • sólo puede haber un objeto.

Si su propuesta Singleton tiene sólo uno o dos de estos requisitos, un rediseño casi siempre es la opción correcta.

Por ejemplo, una cola de impresión es raro para ser llamado desde más de un lugar (en el menú de Impresión), así que usted puede utilizar los mutexes para resolver el acceso simultáneo problema.

Un simple logger es el ejemplo más evidente de una posible-válido Singleton, pero esto puede cambiar con el más complejo la tala de los esquemas.

37voto

Paul Croarkin Puntos 5845

La lectura de los archivos de configuración que sólo se deben leer en tiempo de inicio y la encapsulación de los mismos en un Singleton.

21voto

Martin Beckett Puntos 60406

Leer sólo hijos únicos almacenar algún estado mundial (lenguaje del usuario, ayuda filepath, rutas para la aplicación) son razonables. Tenga cuidado de usar únicos para controlar la lógica de negocio - sola casi siempre termina siendo múltiple

16voto

Federico A. Ramponi Puntos 23106

La gestión de una conexión (o un grupo de conexiones) a una base de datos.

Me gustaría utilizar también para recuperar y almacenar información sobre los archivos de configuración externos.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X