agosto 2, 2009 1

El patrón singleton, una única instancia de una clase

By in PHP

En ocasiones puede ser que necesitemos que una clase esté instanciada una, y solo una, vez durante la ejecución de nuestra aplicación. Para ello podemos hacer uso del patrón de diseño singleton. Para ello tenemos que definir el constructor como privado, para evitar que se puedan crear instancias desde fuera de los métodos de la clase; una variable estática privada, que contendrá una instancia de la clase; un método con el que obtendremos dicha instancia y también sobreescribiremos el método __clone para que no se pueda clonar la clase. Veámoslo con un ejemplo:

<?php

class Singleton {

	private static $singleton = NULL;

	private function __construct()
	{
		// Código del constructor.
		echo "constructor Singleton.";
	}
	// Método que nos devuelve la instancia de la clase.
	public static function getSingleton()
	{
		// Si la clase no está instanciada la creamos.
		if(self::$singleton == NULL)
		{
			self::$singleton = new Singleton();
		}

		// Devolvemos la instancia de la clase
		return self::$singleton;
	}

	// Sobreescribimos el método __clone para que produzca un error.
	public function __clone()
	{
		trigger_error("No se puede clonar la clase Singleton.", E_USER_ERROR);
	}
}
?>

Cuando queramos hacer uso de esta clase tendremos que llamar a Singleton::getSingleton(), que nos devuelve la instancia única de la clase. Esto nos puede ser útil, por ejemplo, para el manejo de las conexiones a base de datos o para hacernos una clase que maneje la configuración.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: ,

One Response to “El patrón singleton, una única instancia de una clase”

  1. Related……

    […]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[…]……

Leave a Reply