Abstract Factory est un modèle de création qui fournit une interface permettant de créer des familles d'objets liés ou dépendants sans spécifier leurs classes concrètes. Considérez-le comme une usine d'usines : vous choisissez une usine et tous les objets que vous créez grâce à elle sont garantis compatibles les uns avec les autres.

Distinction clé par rapport à la méthode Factory : la méthode Factory crée un produit ; Abstract Factory crée toute une famille de produits connexes. Tous les produits d’une usine sont conçus pour fonctionner ensemble.
Le problème : les familles d’interface utilisateur

Vous créez une boîte à outils d'interface utilisateur multiplateforme. Vous disposez de widgets Bouton et Case à cocher. Chaque plate-forme (Windows, macOS, Linux) a besoin de sa propre apparence. Vous devez garantir que si vous créez un WindowsButton, vous créez également un WindowsCheckbox – jamais une famille mixte comme WindowsButton + MacCheckbox.

Cliquez pour voir les connexions des familles de produits ▶
GUIFactique
🪟WindowsFactory
🍎MacFactory
🔲Bouton Win
☑️WinCheckbox
🔘Bouton Mac
Case à cocher Mac
Participants
Cliquez sur chaque participant pour connaître son rôle
Exemple de code complet
java
interface Button {
    void render();
    void onClick();
}

interface Checkbox {
    void render();
    void toggle();
}
Usine abstraite vs méthode d'usine
Cliquez pour comparer les deux modèles
Usine abstraite dans la bibliothèque standard Java
Cliquez sur les lignes en surbrillance pour voir le motif
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();
À retenir : Abstract Factory garantit la compatibilité des produits. Si vous devez vous assurer que les objets créés fonctionnent comme un ensemble cohérent (les boutons correspondent aux cases à cocher correspondent aux barres de défilement), Abstract Factory est le bon outil.
Compromis : l'ajout d'un nouveau type de produit à la famille (par exemple une info-bulle) nécessite de modifier l'interface d'Abstract Factory et TOUTES les implémentations d'usine concrète. Planifiez soigneusement vos familles de produits dès le départ.