- En quoi ces trois modèles sont-ils différents les uns des autres?
Factory: crée des objets sans exposer la logique d'instanciation au client.
Méthode d'usine: définissez une interface pour créer un objet, mais laissez les sous-classes décider de la classe à instancier. La méthode Factory permet à une classe de différer l'instanciation aux sous-classes
Abstract Factory: fournit une interface pour créer des familles d'objets liés ou dépendants sans spécifier leurs classes concrètes.
Le modèle AbstractFactory utilise la composition pour déléguer la responsabilité de la création d'un objet à une autre classe tandis que le modèle de conception de la méthode Factory utilise l'héritage et s'appuie sur une classe ou une sous-classe dérivée pour créer un objet
- Quand utiliser lequel?
Factory: Le client a juste besoin d'une classe et ne se soucie pas de l'implémentation concrète qu'il obtient.
Méthode d'usine: le client ne sait pas quelles classes concrètes il devra créer au moment de l'exécution, mais veut juste obtenir une classe qui fera le travail.
AbstactFactory: lorsque votre système doit créer plusieurs familles de produits ou que vous souhaitez fournir une bibliothèque de produits sans exposer les détails d'implémentation.
Les classes Abstract Factory sont souvent implémentées avec la méthode Factory. Les méthodes d'usine sont généralement appelées dans les méthodes de modèle.
- Et aussi si possible, des exemples java liés à ces modèles?
Usine et méthode d'usine
Intention:
Définissez une interface pour créer un objet, mais laissez les sous-classes décider quelle classe instancier. La méthode Factory permet à une classe de différer l'instanciation aux sous-classes.
Diagramme UML :
Produit: il définit une interface des objets créés par la méthode Factory.
ConcreteProduct: Implémente l'interface produit
Créateur: déclare la méthode Factory
ConcreateCreator: implémente la méthode Factory pour renvoyer une instance d'un ConcreteProduct
Énoncé du problème: créez une usine de jeux à l'aide des méthodes d'usine, qui définissent l'interface du jeu.
Extrait de code:
Modèle d'usine. Quand utiliser les méthodes d'usine?
Comparaison avec d'autres modèles de création:
La conception commence à l'aide de la méthode d'usine (moins compliquée, plus personnalisable, les sous-classes prolifèrent) et évolue vers Abstract Factory, Prototype ou Builder (plus flexible, plus complexe) à mesure que le concepteur découvre où plus de flexibilité est nécessaire
Les classes Abstract Factory sont souvent implémentées avec des méthodes Factory , mais elles peuvent également être implémentées à l'aide de Prototype
Références pour en savoir plus: Modèles de conception Sourcemaking