Blog de Gonzalo

FACTORY

El patrón de diseño factory permite centralizar la creación de objetos que van a tener una funcionalidad similar en la aplicación para desacoplar la relación entre clases.
En si lo que hace este patrón es crear objetos de un tipo determinado en tiempo de ejecución. Consiste en un método para crear objetos (familias de objetos) cuando no sabemos la clase exacta del objeto que va a ser creado. De esta manera se encapsulan clases en una clase general de la que heredarán distintas subclases. Con este patrón se puede redefinir métodos en cada subclase, así como automatizar la creación de objetos utilizando variables. Este patrón es útil porque permite crear objetos que tienen algo en común (comparten una interfaz) ya que se crea un objeto sin especificar la clase a la que pertenece, la instancia del objeto a crear depende de condiciones externas a la clase. Centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al cliente la elección el subtipo a crear.


//Clase principal 
class Motor {
public function __construct(){}
public function arranca() {
return "run run run run...";
}
}
//Se especifica el motor
class MotorDiesel extends Motor {
public function __construct() {}
}
class MotorBiodiesel extends Motor {
public function __construct() {}
}
//Clase coche
class Coche {
private $motor;
public function __construct(Motor $motor) {
$this->motor = $motor;
echo $this->motor->arranca().'
';
}
}
//Se instancian las clases y se pasan los objetos del tipo de motor al coche $motorDiesel = new MotorDiesel();
$motorBiodiesel = new MotorBiodiesel();
$carroDiesel = new Coche($motorDiesel);
$carroHipster = new Coche($motorBiodiesel);

Este ejemplo sencillo explica lo que es este patrón. Es muy sencillo y fácil de seguir.

Compartir en twitter