Patrón Abstract Factory¶
Problema a resolver¶
Problema
Cómo independizar un conjunto de clases C que utilizan otra conjunto de clases abstractas (o interfaces) A de implementaciones concretas de dichas clases abstractas, asegurando además que todas las clases de C utilizan las mismas versiones concretas de A.
Ventajas e Incovenientes¶
Receta para aplicar el patrón¶
- Identificar el conjunto de clases abstractas (o interfaces)
Acuyas clases concretas pueden dar lugar a distintos modos de funcionamiento o configuración de la aplicación.- Crear una clase (o interfaz) que represente la factoría abstracta que se va a encargar de crear instancias de las clases abstractas (o interfaces)
A. Se recomienda nombrar a dicha factoría abstracta con un nombre que describa el conjunto de clasesA, seguido del sufijoAbstractFactory.- Por cada clase abstracta (o interfaz)
XenA, añadir un método abstractocreateX() : Xa la factoría abstracta.- Identificar todas las configuraciones
Configsen las cuales puede funcionar la aplicación.- Por cada configuración concreta
Cfgen la cual puede funcionar la aplicación, crear una factoría concretaCFque represente dicha configuración. Dicha factoría concreta heredará de la factoría abstracta antes creada. Se recomienda dar como nombre a dicha factoría concreta el nombre de la configuración a la que corresponde, el prefijo dado a la factoría abstracta que implemente, yFactorycomo sufijo.- Implementar cada método
createX() : Xde cada factoría concretaCFpara que dentro de dicho método se cree y se retorne un objeto de la clase concreta que corresponda a la claseXdentro de la configuración asociada a la factoría concretaCF.