La Fabrique abstraite est un patron de conception de création qui permet de créer des familles de produits complètes sans avoir à préciser leurs classes concrètes.
La fabrique abstraite définit une interface pour la création de chaque produit, mais délègue la véritable création des produits aux classes concrètes de la fabrique. Chaque type de fabrique correspond à une certaine variété de produits.
Le code client appelle les méthodes de création d’un objet Fabrique plutôt que de créer directement les produits à l’aide d’un constructeur (opérateur new). Comme chaque fabrique possède sa propre variante de produit, tous ses produits seront compatibles.
Le code client manipule les fabriques et les produits uniquement via leurs interfaces abstraites, ce qui lui permet de travailler avec n’importe quelle variante de produit créée par un objet Fabrique. Créez juste une nouvelle classe concrète Fabrique et passez-la au code client.
Lisez notre Comparaison des fabriques si vous avez du mal à comprendre la différence entre les divers concepts et patrons.
Exemples d’utilisation : Le patron fabrique abstraite est très répandu en Java. Il est utilisé dans de nombreux frameworks et bibliothèques afin d’étendre et de personnaliser leurs composants standards.
Voici quelques exemples tirés des bibliothèques principales de Java :
Identification : Ce patron est facile à identifier, car ses méthodes renvoient un objet Fabrique. De plus, la fabrique est utilisée pour créer des sous-composants spécifiques.
Les familles de composants GUI (interface graphique utilisateur) multiplateforme et leur fabrication
Dans cet exemple, les boutons et cases à cocher feront office de produits. Ils possèdent deux variantes : macOS et Windows.
La fabrique abstraite définit une interface pour la création des boutons et des cases à cocher. Deux fabriques concrètes retournent les deux produits d’une seule variante.
Le code client manipule les fabriques et les produits via leurs interfaces abstraites. Ainsi, le code client peut travailler avec plusieurs variantes de produits en fonction du type de l’objet Fabrique.