Desde hacía bastante tiempo que quería publicar mi opinión sobre singleton, y hoy aquí está, quiero agregar que este texto es parte de un paper que publiqué hace unos días llamado Programación orientada a objetos en php .
Singleton es una forma de manejar las clases, que evita la creación de múltiples instancias, en cualquier momento uno puede obtener la instancia que se creó originalmente, de modo que en cualquier lugar tienes acceso a la instancia, sin necesidad de ir llevando la variable que tiene la instancia de un lugar al otro, simplemente se adquiere la instancia utilizando una función estática.
Ahora bien, estoy completamente encontra de singleton, dado que suele llevar a un terrible uso de las clases, como dije al principio una clase es un modelo abstracto de una serie de objetos que son de la misma clasificación, no obstante si hubiese un solo tipo de estos objetos no sería necesario crear una clasificación de los mimos, veamos, como dije al principio si solo hubiese un tipo de vaso, con una opacidad específica, un tamaño específico una forma específica (osea todos los vasos del mundo fueran exactamente iguales y no se los pudiese hacer de forma diferente) entonces nosotros no necesitamos crear una representación de los vasos, ya que el mismo vaso sería la representación. Pero al haber muchos vasos diferentes nosotros tenemos una representación global que dictamina que todos son vasos, por más que sean diferentes.
Singleton limita la creación de objetos de una clase a uno solo, y de esta forma simple y llanamente digo que para hacer esto es lo mismo que crear todos las propiedades y funciones de una clase como estáticas, de esta forma tenemos solo una “instancia”.
La mayoría de las clases que usan singleton ni siquiera deberían ser clases, porque no es necesaria la implementación de una estructura de este tipo para eso.
En muy rara vez se puede utilizar singleton correctamente, y gracias al uso indebido de singleton suceden cosas como el problema que hay hoy en día en los frameworks que será explicado luego.
Bueno solo queda dar una revisada al paper escrito y descargarlo de aquí.
Un saludo para todos los lectores de Snifer-L4bs, espero que un día de estos se den una vueltita por mi blog.