Description:
Le but du pattern Factory Method est d'introduire une méthode abstraite de création d'un objet en reportant aux sous-classes concrètes la création effective.
Exemple:
Lorsqu'un système veut pouvoir créer différents type d'objets, une méthode abstraite(Factory Method) est introduite, en fonction de la nature du client appelant, cette méthode va instancier la sous-classe correspondante.
But:
Pourvoir déclarer un seul type (abstrait) et instancier différents types concrets héritant du type abstrait.
Pourvoir déclarer un seul type (abstrait) et instancier différents types concrets héritant du type abstrait.
Solution:
On introduit une classe
abstraite ayant une méthode abstraite dont le client va se servir pour
instancier les sous-classes concrètes.
Avantages:
- La méthode abstraite connait la classe concrète à instancier.
- L'objet Client ne doit pas se préoccuper des différences d'implantation. - La méthode abstraite connait la classe concrète à instancier.
Diagramme de classes:
Le pattern Factory Method appliqué à des clients et à leurs produits
La structure générique du pattern.
Le pattern Factory Method appliqué à des clients et à leurs produits
La structure générique du pattern.
Participants:
- CreateurAbstrait(Client) est la classe abstraite qui introduit la signature de la méthode qui invoquet la méthode de fabrique.
- CreateurConcret (Client1,Client2,..) est la classe concrète implantant les méthodes de fabrique. Il peut exister plusieurs créateurs concrets.
- Produit est la classe abstraite décrivant les propriétés communes des produits.
- ProduitConcret est la classe concrète décrivant un produit.
Collaborations:
Les méthodes concrètes de la classe CreateurAbstrait se basent sur l'implantation de la méthode de fabrique dans les sous-classes. Cette implantation crée une instance de la sous-classe adéquate de Produit.
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 du mécanisme de polymorphisme.
Aucun commentaire:
Enregistrer un commentaire