Logo Studenta

Qué es el patrón Singleton y cómo se implementa en PHP

¡Estudia con miles de materiales!

Vista previa del material en texto

¿Qué es el patrón Singleton y cómo se implementa en PHP? 
 
El patrón Singleton es un patrón de diseño creacional que garantiza que una clase tenga una 
única instancia y proporciona un punto global de acceso para acceder a esa instancia desde 
cualquier parte del código. El objetivo principal del patrón Singleton es restringir la creación 
de múltiples instancias de una clase y asegurarse de que solo exista una única instancia en 
toda la aplicación. 
 
Características clave del patrón Singleton: 
 
1. Un constructor privado: La clase tiene un constructor privado para evitar que se cree una 
instancia desde fuera de la clase. 
 
2. Una variable estática privada: La clase tiene una variable estática privada que almacenará 
la única instancia de la clase. 
 
3. Un método estático para obtener la instancia: La clase proporciona un método estático 
público para obtener la única instancia de la clase. Este método comprueba si ya se ha 
creado una instancia; si es así, la devuelve; de lo contrario, crea una nueva instancia y la 
devuelve. 
 
**Implementación del patrón Singleton en PHP:** 
 
```php 
class Singleton { 
 private static $instancia; 
 
 // Constructor privado para evitar la creación de instancias desde fuera de la clase 
 private function __construct() { 
 // Lógica de inicialización (opcional) 
 } 
 
 // Método estático para obtener la única instancia de la clase 
 public static function obtenerInstancia() { 
 if (self::$instancia === null) { 
 self::$instancia = new self(); 
 } 
 return self::$instancia; 
 } 
 
 // Métodos de la clase (opcional) 
 public function metodoEjemplo() { 
 // Lógica del método 
 } 
} 
``` 
 
En este ejemplo, la clase `Singleton` tiene un constructor privado para evitar que se cree 
una instancia directamente desde fuera de la clase. El método estático `obtenerInstancia()` 
es el punto de acceso global para obtener la única instancia de la clase. Si la instancia aún no 
ha sido creada, se crea una nueva instancia y se almacena en la variable estática 
`$instancia`. Si la instancia ya existe, simplemente se devuelve la instancia existente. 
 
**Uso del patrón Singleton:** 
 
```php 
// Uso de la clase Singleton 
$instancia1 = Singleton::obtenerInstancia(); 
$instancia2 = Singleton::obtenerInstancia(); 
 
// $instancia1 y $instancia2 apuntan a la misma instancia de la clase 
``` 
 
En este ejemplo, `$instancia1` y `$instancia2` apuntarán a la misma instancia de la clase 
`Singleton`, ya que solo se crea una única instancia y se comparte entre todas las llamadas al 
método `obtenerInstancia()`. 
 
Es importante tener en cuenta que el patrón Singleton puede ser útil en situaciones 
específicas donde se requiere una única instancia global, como en la conexión a una base de 
datos, la configuración del sistema o el registro de eventos. Sin embargo, el uso excesivo del 
patrón Singleton puede llevar a problemas de diseño y puede dificultar las pruebas 
unitarias, ya que introduce acoplamiento en el código. Por lo tanto, es recomendable utilizar 
el patrón Singleton con moderación y solo en casos donde sea realmente necesario 
garantizar una única instancia de una clase en toda la aplicación.

Continuar navegando