Design Pattern Factory & Abstract Factory

NicolasAirault
59.8K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Design pattern Abstract Factory

Le design pattern Abstract Factory, ou Fabrique abstraite reprend le même principe que Factory, à l'exception que nous considérons dans ce cas un ensemble de fabrique. En effet, la Fabrique abstraite permet non pas d'instancier différents objets d'une même classe mère mais plusieurs objets de plusieurs classes mères.

Voici le diagramme UML du design pattern Abstract Factory :

Diag_design

D'après ce diagramme, nous pouvons repérer les différents éléments suivants :

  1. FabriqueAbstraite : la fabrique abstraite contenant toutes les méthodes de création d'objets, le client peut seulement intéragir avec.
  2. FabriqueConcrete1 & FabriqueConcrete2 : Les fabriques dérivant de la fabrique abstraite, permettant d'instancier les objets souhaités.
  3. ProduitAbstraitA & ProduitAbstraitB : Les classes abstraites des objets, elles contiennent les méthodes d'utilisation propre à chaque objet.
  4. ProduitA1/B1 & ProduitA2/B2 : Les classes dérivant des produits abstraits, ce sont ces produits qui seront renvoyés au client.

De la même manière que le design pattern Factory, nous détachons toutes méthodes de création des méthodes d'utilisation, afin de faciliter la maintenance et la compréhension des applications. Nous remarquons aussi que le principe DIP est démontré, ainsi qu'un nouveau principe : ISP. ISP nous dit que ** un client ne doit pas dépendre d'interfaces qui ne lui correspondent pas**, ainsi un produit A1 peut etre vu comme un simple produit A, tout en ne prenant pas les méthodes du produit B, chose qui arrivera lors de la création des objets dans les différentes fabriques.

Nous allons à présent vous présenter un exemple plus concret afin d'être plus clair sur l'utilisation de ce design pattern.

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content