Continuamos con la serie de patrones, en esta ocasión vamos a extender la funcionalidad del patrón Singleton para que sea más simple su utilización en nuestros sistemas PHP5.
En el post anterior vimos como implementar el patrón Singleton en nuestras clases. Pero cuando tenemos nuestro sistema con muchas clases que requieren hacer uso de este patrón se vuelve complejo y a la vez más lento el implementar clase por clase todo el código que necesita el patrón para funcionar.
Vamos a mejorar eso utilizando una de las caracterÃsticas más importantes de la POO: la herencia.
Paso número 1: Debemos definir la clase base (clase padre); es decir la clase Singleton:
singleton.class.php
Paso número 2: Crear las clases que vayamos a necesitar extendiendo (heredando) de la clase Singleton.
ejemplo.class.php
Paso número 3: Ahora veamos como utilizarlo.
index.php
De esta forma basta con heredar la clase Singleton en cada una de las clases donde la necesitemos y con hacer polimorfismo del método getInstance() tenemos un Singleton en nuestras clases.
Nos leemos en la siguiente entrega
asdasdasd
April 3, 2008 at 5:29 pm
Ahh pero que pasa cuando yo no se usar PHP5?? No seria mas divertido en .NET??
Jesús
August 13, 2008 at 11:01 am
¿ No serÃa mejor hacerlo mediante una interfaz. Pues haciendolo con herencia, si necesitases crear una clase derivada estás vendido, no ?
pecesama
August 13, 2008 at 11:11 am
asdasdasd Los patrones de diseño son divertidos en cualquier lenguaje. Si no sabes usar PHP5 es buen momento para aprender.
Jesús no se que signifique estar vendido en este contexto, pero no puede usar una interface para esto debido a que debes poner código en el método getInstance.
Marcelo J. Maza
March 2, 2009 at 8:51 pm
La verdad es que esta muy interesante el tema.
Te comento que aun no me llevo muy bien con clases en php, pero lo que estoy necesitando, es generar una instancia de la clase PDO de PHP5 (para conectar a Mysql, ejecutar consultas, etc) y que la instancia de la misma, pueda ser utilizada en todas las clases que necesite (por ej: clase productos, usuarios, etc); esto es para no tener que instanciar/destruir objetos de la clase de datos dentro de cada una de estas clases ó recurrir a pasar el objeto como parámetro.
Hago incapié en el hecho de NO tener que instanciar o pasar como parametro el objeto de la clase de datos (PDO). De ser posible cualquier aporte o sugerencia, estoy a la espera.
Desde ya muchisimas gracias por tu tiempo.
Marcelo
Leo
March 28, 2009 at 10:17 am
que pasa si dos hilos de ejecución intentan crear la instancia al mismo tiempo.