Abstract Factory es un patrón de creación que proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas. Piense en ello como una fábrica de fábricas: usted elige una fábrica y se garantiza que todos los objetos que cree a través de ella serán compatibles entre sí.

Distinción clave del método de fábrica: el método de fábrica crea un producto; Abstract Factory crea una familia completa de productos relacionados. Todos los productos de una fábrica están diseñados para funcionar juntos.
El problema: familias de UI

Estás creando un conjunto de herramientas de interfaz de usuario multiplataforma. Tienes widgets de botón y casilla de verificación. Cada plataforma (Windows, macOS, Linux) necesita su propia apariencia. Debe garantizar que si crea un WindowsButton, también cree un WindowsCheckbox, nunca una familia mixta como WindowsButton + MacCheckbox.

Haga clic para ver las conexiones de la familia de productos ▶
GUIFábrica
🪟fábrica de ventanas
🍎MacFábrica
🔲botón ganar
☑️WinCasilla de verificación
🔘Botón Mac
MacCasilla de verificación
Participantes
Haga clic en cada participante para conocer su rol.
Ejemplo de código completo
java
interface Button {
    void render();
    void onClick();
}

interface Checkbox {
    void render();
    void toggle();
}
Método de fábrica abstracta versus método de fábrica
Haga clic para comparar los dos patrones.
Fábrica abstracta en la biblioteca estándar de Java
Haga clic en las líneas resaltadas para ver el patrón.
java
1
// javax.xml.parsers.DocumentBuilderFactory
2
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
3
DocumentBuilder builder = factory.newDocumentBuilder();
4
5
// javax.xml.transform.TransformerFactory — same pattern
6
TransformerFactory tf = TransformerFactory.newInstance();
7
Transformer transformer = tf.newTransformer();
Conclusión clave: Abstract Factory garantiza la compatibilidad del producto. Si necesita asegurarse de que los objetos creados funcionen como un conjunto consistente (los botones coinciden con las casillas de verificación y las barras de desplazamiento), Abstract Factory es la herramienta adecuada.
Compensación: Agregar un nuevo tipo de producto a la familia (por ejemplo, una información sobre herramientas) requiere cambiar la interfaz de Abstract Factory y TODAS las implementaciones concretas de Factory. Planifique cuidadosamente sus familias de productos desde el principio.