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
Como Jorge mencionó en su último post, andamos re-diseñando la arquitectura de gelato cms, para en un par de versiones mudarlo completamente a PHP5 para obtener ventaja de su poderoso motor de OOP y poder hacer un mejor uso de los patrones de diseño.
Por lo que comenzaré con una serie de posts sobre como implementar patrones de diseño con PHP5 y un par de ejemplos un poco más adelante de como aplicarlos en “la vida real” de nuestros proyectos.
El primer patrón con el que iniciaré es el patrón Singleton, el cual considero como la base de la implementación exitosa de muchos patrones.
La teorÃa nos dice lo siguiente:
El patrón de diseño Singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.
Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.
Por lo que al usar el patrón Singleton nos aseguramos que SOLO tendremos una misma instancia de nuestra clase.
¿Cómo hacerlo con PHP5?
Y para utilizarlo:
Nos leemos en la siguiente entrega