917 votos

Diferencia entre clase estática y patrón singleton?

Lo real (es decir. práctico) diferencia existe entre una clase estática y un patrón singleton?

Ambos pueden ser invocados sin la creación de instancias, ambos proporcionan sólo con una "instancia" y ninguno de ellos es seguro para subprocesos. ¿Hay alguna otra diferencia?

631voto

Jon Skeet Puntos 692016

¿Qué te hace decir que una ficha o un método estático no es thread-safe? Por lo general, ambos deben ser implementadas para que sean seguros para subprocesos.

La gran diferencia entre un singleton y una serie de métodos estáticos es que los únicos que podemos implementar interfaces (o se derivan de útil clases base, aunque esto es menos común IME), así que usted puede pasar todo el singleton como si fuera "otro" de la implementación.

224voto

Kieran Senior Puntos 6053

La verdadera respuesta es por Jon Skeet, en otro foro aquí.

Un singleton permite el acceso a un único creado instancia - que la instancia (o más bien, una referencia a esa instancia) puede pasarse como parámetro a otros los métodos, y se tratan como un normal objeto.

Una clase estática sólo permite estática métodos.

192voto

Vadluri Sreenu Puntos 993
  1. Objeto Singleton tiendas en el Montón , pero, objeto estático almacena en la pila
  2. Podemos clonar el objeto de Singleton pero, no podemos clonar la estática de la clase de objeto
  3. Clase Singleton seguir la programación orientada a objetos(object oriented de los principios), pero no estáticos de la clase
  4. podemos implementar la interfaz con la clase Singleton, pero no con la clase Estática.

57voto

neil.johnson Puntos 369

El patrón Singleton tiene varias ventajas sobre las clases estáticas. En primer lugar, un singleton puede extender clases e implementar interfaces, mientras que una clase estática, no se puede extender a clases, pero no hereda sus miembros de instancia). Un singleton puede ser inicializado por pereza o de forma asincrónica, mientras que una clase estática generalmente se inicializa cuando se carga por primera vez, llevando a potenciales del cargador de clases de problemas. Sin embargo, la ventaja más importante, sin embargo, es que los únicos que puede ser manejado polymorphically sin obligar a sus usuarios a asumir que no es sólo una instancia.

33voto

Morendil Puntos 3112

Una clase estática es uno que sólo tiene métodos estáticos, para que de una mejor palabra sería "funciones". El estilo de diseño plasmado en una clase estática es puramente de procedimiento.

Singleton, por otro lado, es un patrón específico para diseño OO. Es una instancia de un objeto (con todas las posibilidades inherentes en que, como el polimorfismo), con la creación de un procedimiento que asegura que no es sólo una instancia de esa función a lo largo de toda su vida.

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