140 likes | 262 Views
Design Patterns. Factory Method – Pattern de construction. Problématique. Une classe doit instancier des objets dont elle ne connaît que les classes abstraites, qu’elle ne peut instancier. Factory Method. Description :
E N D
Design Patterns [DANT] Génie Logiciel Factory Method – Pattern de construction
Problématique Une classe doit instancier des objets dont elle ne connaît que les classes abstraites, qu’elle ne peut instancier. [DANT] Génie Logiciel
Factory Method Description : "Define an interface for creating an object, but let the subclasses decide which class to instantiate. The Factory method lets a class defer instantiation to subclasses.“ • Introduire une méthode abstraite de création d’un objet en reportant aux sous-classes concrètes la création effective. Domaines d’utilisation : • Une classe ne connaît que les classes abstraites des objets avec lesquels elle possède des relations. • Une classe veut transmettre à ses sous-classes les choix d’instanciation en profitant des mécanismes du polymorphisme. [DANT] Génie Logiciel
Factory Method Avantages du pattern Factory Method : • Pouvoir instancier dynamiquement des sous-classes. • Augmenter la généricité du code par l’utilisation d’objets typés en abstrait. Remarque : • Le pattern Abstract Factory est implementé avec des méthodes de fabrique (Factory methods) [DANT] Génie Logiciel
Factory Method Exemple : [DANT] Génie Logiciel
Factory Method Structure générique du pattern : [DANT] Génie Logiciel
Produit Abstrait [DANT] Génie Logiciel
Produits concrets [DANT] Génie Logiciel
Produits concrets [DANT] Génie Logiciel
Créateur Abstrait [DANT] Génie Logiciel
Créateurs Concrets [DANT] Génie Logiciel
Classe utilisatrice du Pattern [DANT] Génie Logiciel
Résultat en sortie Le paiement de la commande au comptant de : 2000 est effectué. Le paiement de la commande au comptant de : 10000 est effectué. Le paiement de la commande au comptant de : 2000 est effectué. On peut remarquer que la demande d’une commande assortie d’un crédit de 10000 a été refusée à cause de la contrainte exprimée dans la méthode valide() de CommandeCredit. [DANT] Génie Logiciel