Una fábrica abstracta es aquella fábrica que tiene diferentes implementaciones debido a que existen dentro de su proceso de creación alguna particularidad que diferencia a una fábrica de otra.
Como podemos ver en la imagen, tenemos un producto base ProductAbstract
del cual surgen 2 implementaciones ProductA
y ProductB
, por otra parte tenemos una fábrica base FactoryAbstract
de la cual surgen 2 implementaciones FactoryProductA
y FactoryProductB
.
En la fábrica base existe un método llamado create
el cual regresa como resultado un objeto del tipo ProductAbstract
.
La fábrica FactoryProductA
regresa un ProductA
, mientras que la fábrica FactoryProductB
regresa un ProductB
.
En la imagen anterior, vemos que existen 2 fábricas, una se encarga de ensamblar camionetas, la otra se encarga de ensamblar sedan, ambas fábricas realizan la misma acción de ensamblar, pero cada fábrica lo hace de una manera distinta y el producto que generan es distinto.