Patrón de Diseño “Singleton” implementación PHP

El Patrón “Singleton” sirve para  restringir la creación de instancias de un objeto, obligando que sólo se pueda crear una única instancia

Análisis del Patrón

Implementación:


<?php
class Singleton {

 private static $instancia;
 private $cont;

 private function __construct() {
 echo "Se ha creado una Instancia para la clase: " . __CLASS__ . "<br />";
 $this->cont = 0;
 }

 public static function getInstance() {
 if (! self::$instancia instanceof self) {
 self::$instancia = new self ( );
 } else {
 echo "Existe una Instancia creada para " . __CLASS__ . "<br />";
 }
 return self::$instancia;
 }

 public function incrementar() {
 return ++ $this->cont;
 }

 public function disminuir() {
 return -- $this->cont;
 }

 public function getCont() {
 return $this->cont;
 }
}
?>

Prueba del Patrón:


<?php
include 'Singleton.php';
//Creamos una Instancia, en caso que NO exista se crea.
$instancia = Singleton::getInstance ();
 echo "Objeto: instancia (método incrementar): " . $instancia->incrementar () . "<br />";
 echo "Objeto: instancia (método incrementar): " . $instancia->incrementar () . "<br />";
 echo "Objeto: instancia (método incrementar): " . $instancia->incrementar () . "<br /><br />";

//Creamos una Instancia, en caso que exista retorna la referencia del objeto creado.
$otraInstancia = Singleton::getInstance ();
 echo "Objeto:  otraInstancia (método disminuir): " . $otraInstancia->disminuir () . "<br />";
 echo "Objeto:  otraInstancia (método incrementar): " . $otraInstancia->incrementar () . "<br /><br />";

 //pedimos el valor del contador por medio de ambas instancias.
echo "Objeto: instancia (método getCont): " . $instancia->getCont () . "<br />";
echo "Objeto: otraInstancia (método getCont): " . $otraInstancia->getCont () . "<br />";
?>

Salida en el navegador:

Se ha creado una Instancia para la clase: Singleton
Objeto: instancia (método incrementar): 1
Objeto: instancia (método incrementar): 2
Objeto: instancia (método incrementar): 3

Existe una Instancia creada para Singleton
Objeto:  otraInstancia (método disminuir): 2
Objeto:  otraInstancia (método incrementar): 3

Objeto: instancia (método getCont): 3
Objeto: otraInstancia (método getCont): 3

Descargar Ejemplo

Link de interés:

saludos

promero


¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscríbes a mi feed y obtienes los artículos como este enviados automáticamente cada día hacia tu lector de feeds.

No hay comentarios todavía.

Deja un comentario

Saltos de línea automáticos, la dirección de email nunca será publicada, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(requerido)

(requerido)