En lo personal este patrón no me encanta. Factory ya usaba una capa de abstracción y este agrega otra capa (lo cuál lo hace complejo).
Además de eso, para agregar un producto nuevo (un coche en este caso), se necesitan agregar muchas cosas:
- La creación del coche que siga el contrato de BaseCar (por cierto, no se agrego un BaseCar en el ejemplo de esta clase)
- La creación de cada uno de los modelos de nuevo coche (Sedan y Hatchback en este caso)
- Agregar un nuevo método en AbstractFactory para el nuevo producto
- Agregar polimorfismo a cada subfactory del nuevo producto (SedanModelFactory & HatchbackModelFactory)
.
Son muchas cosas para agregar un nuevo producto. Aunque la buena noticia es que se siguen cumpliendo los principios de Responsabilidad Unica y de Open-Close
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?