Remarque: les questions se trouvent à la fin de l'article.
J'ai lu les autres threads de stackoverflow concernant Abstract Factory vs Factory Method . Je comprends l'intention de chaque modèle. Cependant, je ne suis pas clair sur la définition.
La méthode Factory définit une interface pour créer un objet, mais laisse les sous-classes décider lesquelles de celles à instancier. Une méthode de fabrique permet aux classes de différer l'instanciation aux sous-classes.
En revanche, une fabrique abstraite fournit une interface pour créer des familles d'objets liés ou dépendants sans spécifier leurs classes concrètes.
L' usine abstraite ressemble beaucoup à la méthode d'usine . J'ai dessiné quelques classes UML pour illustrer mon propos.
Remarque:
- Le diagramme provient de schémas www.yuml.com donc ils ne sont pas parfaitement orientés. Mais c'est un service gratuit :).
- Les diagrammes peuvent ne pas être parfaits. J'apprends toujours les modèles de conception du GoF .
Méthode d'usine:
Abstract Factory (seulement 1 membre):
Abstract Factory (plus de membres):
Des questions:
- Si Abstract Factory n'a qu'un seul créateur et qu'un seul produit, s'agit-il toujours du modèle Abstract Factory ?(une interface pour créer des familles)
- Le créateur concret de la méthode d'usine peut-il être créé à partir d'une interface ou doit-il provenir d'une classe?(les classes reportent les instanciations aux sous-classes)
- Si la fabrique abstraite ne peut avoir qu'un seul créateur et un seul produit, la seule différence entre la fabrique abstraite et la méthode de fabrique est-elle que le créateur de la première est une interface et le créateur de la seconde est une classe?