2012-10-07 72 views
5

Duplicar posibles:
Difference between static class and singleton pattern?clase Singleton v/s con los miembros estáticos y métodos en Java

¿Por qué uno siempre requerirá una y sólo una instancia? Se puede lograr el mismo propósito usando clases con variables de miembros estáticos y métodos estáticos.

Por lo que yo puedo averiguar, puede haber dos posibles respuestas a dar -

  1. Cuando su clase necesita tener estado y desea que sólo un objeto de la misma. Desde el punto de vista del diseño, las clases con métodos estáticos & son consideradas como las clases de Utilidad y no deben mantener ningún estado.

  2. Si su clase necesita formar parte de un polimorfismo y quiere un solo objeto de la clase (s) que están en el árbol de herencia.

Sería muy útil si alguien puede proporcionar un ejemplo de escenario de la vida real o de cualquier API de Java, donde los objetos Singleton tienen que participar en el polimorfismo/Herencia?

+0

La conexión con la base de datos es uno de los ejemplos más comunes de Singleton. Necesitas una conexión. – pidabrow

Respuesta

2

Collections.emptySet() es un ejemplo típico de un singleton que no se puede implementar como una clase estática ya que, obviamente, su objetivo es ser una instancia de la interfaz java.util.Set. No es costoso crear, pero sería estúpido crear una nueva instancia cada vez que se necesita un conjunto vacío, ya que la instancia única puede reutilizarse.

1

Las clases que realizan el registro o acceso común a bases de datos con frecuencia siguen el patrón de Singleton. Básicamente todo lo que debería tener métodos de instancia y que es costoso de construir.

0

Mi respuesta es bastante corta, pero es suficiente para usar singleton común en lugar de su implementación estática. La respuesta es:

  • paradigma populares (sí lo es!)
  • Hilos (sincronización, etc.)
  • aplicación de interfaz (la clase estática tiene algunas restricciones)
0

Alcance y comportamiento son preocupaciones diferentes y NO deben mezclarse. Es posible que desee que su objeto esté disponible por uso, por hilo, por solicitud web, por sesión o global (Singleton). Las razones para realizar estos ajustes probablemente se deban a la gestión de recursos y, en última instancia, al rendimiento. El comportamiento dentro de su clase no debería tener que cambiar si cambia su alcance.

Singleton es un patrón para tomar un objeto regular y controlar su alcance con solo un poco de código atornillado. Idealmente, sin embargo, realmente no deberías tratar el alcance en absoluto dentro de tu objeto y delegarlo en una fábrica o contenedor.

Cuestiones relacionadas