Logo Studenta

Qué es el patrón Factory y cuál es su uso en PHP

¡Estudia con miles de materiales!

Vista previa del material en texto

¿Qué es el patrón Factory y cuál es su uso en PHP? 
 
El patrón Factory (o patrón de fábrica) es un patrón de diseño creacional que se utiliza para 
crear objetos sin especificar explícitamente la clase exacta del objeto que se creará. En lugar 
de utilizar el constructor de una clase directamente, el patrón Factory proporciona un 
método o una clase de fábrica que se encarga de crear y devolver objetos de una familia o 
jerarquía de clases relacionadas. 
 
El objetivo principal del patrón Factory es encapsular la creación de objetos y ocultar la 
lógica de creación en una clase separada, lo que facilita la extensibilidad y el mantenimiento 
del código. 
 
**Uso del patrón Factory en PHP:** 
 
El patrón Factory se utiliza en situaciones donde: 
 
1. La creación de objetos implica lógica compleja que puede variar en función de ciertos 
parámetros o condiciones. 
 
2. Deseas ocultar la implementación específica de la clase que se está creando para reducir 
el acoplamiento entre clases. 
 
3. Quieres proporcionar una interfaz consistente y sencilla para crear diferentes tipos de 
objetos sin exponer los detalles de implementación. 
 
**Ejemplo de implementación del patrón Factory en PHP:** 
 
Supongamos que tenemos una clase `Producto` con diferentes subclases como 
`ProductoSimple`, `ProductoDescuento`, y `ProductoEspecial`. Utilizaremos el patrón 
Factory para crear objetos de estas clases de forma transparente. 
 
```php 
// Clase base Producto 
abstract class Producto { 
 abstract public function calcularPrecio(); 
} 
 
// Subclases de Producto 
class ProductoSimple extends Producto { 
 public function calcularPrecio() { 
 return 100; 
 } 
} 
 
class ProductoDescuento extends Producto { 
 public function calcularPrecio() { 
 return 80; 
 } 
} 
 
class ProductoEspecial extends Producto { 
 public function calcularPrecio() { 
 return 150; 
 } 
} 
 
// Clase Factory para crear objetos Producto 
class FactoryProducto { 
 public static function crearProducto($tipo) { 
 switch ($tipo) { 
 case 'simple': 
 return new ProductoSimple(); 
 case 'descuento': 
 return new ProductoDescuento(); 
 case 'especial': 
 return new ProductoEspecial(); 
 default: 
 throw new Exception("Tipo de producto no válido."); 
 } 
 } 
} 
 
// Uso del Factory para crear objetos Producto 
$producto1 = FactoryProducto::crearProducto('simple'); 
$precio1 = $producto1->calcularPrecio(); // Resultado: 100 
 
$producto2 = FactoryProducto::crearProducto('descuento'); 
$precio2 = $producto2->calcularPrecio(); // Resultado: 80 
 
$producto3 = FactoryProducto::crearProducto('especial'); 
$precio3 = $producto3->calcularPrecio(); // Resultado: 150 
``` 
 
En este ejemplo, la clase `FactoryProducto` actúa como una fábrica para crear objetos de 
diferentes tipos de `Producto`, ocultando así la lógica de creación dentro del método 
`crearProducto`. Al utilizar el método estático `crearProducto`, podemos obtener el objeto 
adecuado sin conocer los detalles de la implementación de las clases concretas. 
 
El patrón Factory es útil para mantener un código modular, extensible y fácil de mantener, 
especialmente cuando se trabaja con familias de clases relacionadas o cuando la creación de 
objetos implica lógica compleja. También permite cambiar la implementación concreta de 
los objetos sin afectar al código que los utiliza, lo que hace que el patrón Factory sea una 
opción valiosa en el diseño de aplicaciones PHP.

Continuar navegando