En la mayoría de los lenguajes de programación las clases eluden mucho al tipo de sistema. Mientras que una clase, con sus métodos y variables estáticos es un objeto, muy a menudo no puede implementar una interfaz o extender otras clases. Por esa razón, no se puede usar de forma polimórfica, ya que no puede ser el subtipo de otro tipo. Por ejemplo, si tiene una interfaz IFooable
, que es requerido por varias firmas de los métodos de otras clases, la clase de objeto StaticFoo
no se puede utilizar en lugar de IFooable
, mientras que FooSingleton.getInstance()
puede (asumiendo, FooSingleton
implementos IFooable
).
Tenga en cuenta que, como he comentado en la respuesta de Heinzi, un singleton es un patrón para controlar la creación de instancias. Reemplaza new Class()
con Class.getInstance()
, lo que le da al autor de Class
más control sobre las instancias, que puede usar para evitar la creación de instancias innecesarias. El singleton es solo un caso muy especial del patrón de fábrica y debe tratarse como tal. El uso común hace que sea más bien el caso especial de los registros globales, que a menudo termina mal, porque los registros globales no se deben usar simplemente quiera o no.
Si planea proporcionar funciones de ayuda global, los métodos estáticos funcionarán bien. La clase no actuará como clase, sino solo como un espacio de nombres. Sugiero que mantenga una alta cohesión o que termine con los problemas de acoplamiento más extraños.
greetz
back2dos
posible duplicado de http://stackoverflow.com/questions/720744/static-class-and-singleton –
No creo que ya que hablamos de 2 idiomas diferentes por lo que la respuesta puede variar, pero gracias por el enlace, en Java nunca escuchó el término "monoestable" –