Patron de diseño Abstract Factory
Abstract Factory
El objetivo es facilitar una interfaz para crear "familias" de objetos relacionados o dependientes sin que sea necesario especificar su clase.
Veamos mejor un ejemplo, supongamos que quiero definir una clase que genere coches.
<?php
abstract class AbstractCarFactory {
abstract function makeCar();
abstract function makeVan();
}La fabricación de coches tiene sus particularidades, por ejemplo en Europa los coches suelen ser más grandes, de mayor calidad, y más caros que los coches Asiaticos.
<?php
class EuropeanCarFactory extendsAbstractCarFactory{ abstract functionmakeCar(){
// ..} abstract functionmakeVan(){
// ..}}class AsianCarFactory extendsAbstractCarFactory{ abstract functionmakeCar(){
// ..abstract function};makeVan(){
// ..}};
Ahora voy a definir cuales son las clases abstractas de los productos generados por estas factorias.
<?php
abstract class AbstractCar { abstract function getModelName();abstract function getPrice();}abstract class AbstractVan { abstract function getModelName();abstract function getPrice();}
Ahora tendré que definir cuales serán las clases Car y Van para Europa y para Asia.
<?php
class EuropeanCar extendsAbstractCar{ function getModelName(){
return 'Renault Megane';};function getPrice()}{
return 10000;};class EuropeanVan extendsAbstractVan{ function getModelName(){
return 'Renault Kangoo';};function getPrice()}{
return 12000;};
class AsianCar extendsAbstractCar{ function getModelName(){
return 'Renault Megane';};function getPrice()}{
return 10000;};classAsianVan extendsAbstractVan{ function getModelName(){
return 'Renault Kangoo';};function getPrice()}{
return 12000;};
Publicado el
Actualizado por última vez el