El patrón de diseño Singleton está pensado para restringir la creación de objetos de una clase determinada garantizando que sólo exista una instancia de dicha clase y proporcionar un punto de acceso global a ella.
Un ejemplo de utilización de este patrón podría ser una clase para la conexión a la base de datos. Mediante esta clase evitaremos que haya mas de una conexión abierta a la vez en cada aplicación y en cada acceso a la base de datos que necesitemos.
Para crear esta clase utilizando el patrón Singleton tendremos en cuenta lo siguiente:
- Necesitamos un método constructor privado de forma que nadie, salvo ella misma, pueda crear una instancia de esta clase.
- Necesitaremos un atributo estático privado que contendrá la única instancia a esta clase.
- Y por último, un método estático público que creará la instancia de la clase en caso de que se llame por primera vez almacenándola en el atributo estático y luego la devolverá mediante un return.
La implementación básica en PHP sería la siguiente:
<?php Class Conexion { static private $thisInstance = null; private function __construct() { ... } static public function getInstance() { if(self::$thisInstance == null) self::$thisInstance = new Conexion(); return self::$thisInstance; } .... } ?>
Cuando en alguna parte de la aplicación necesitemos acceder a la base de datos, recuperaremos la instancia de la clase y trabajaremos con ella.
// Obtendremos la instancia
$db = new Conexion::getInstance();
// Y ya podremos trabajar con ese objeto
$db->exec("select * from clientes");
...
Este patrón suele ser utilizado en clases que acceden a un recurso único (fichero, base de datos, etc...) de forma que podremos controlar la creación de objectos que acceden a dichos recursos al tener una sola instancia.
Bienvenido a mi rincón en la web. Mi nombre es Carlos Mayo y me dedico a eso del desarrollo web.





