« Patrons de conception/Fabrique abstraite » : différence entre les versions

Contenu supprimé Contenu ajouté
Phe (discussion | contributions)
m typo lien
Ligne 9 :
Avec ce motif de conception, on peut interchanger des classes concrètes sans changer le code qui les utilise, même à l'exécution. Toutefois, ce motif de conception exige un travail supplémentaire lors du développement initial, et apporte une certaine complexité qui n'est pas forcément souhaitable.
== Comment l'utiliser ==
La ''fabrique'' détermine quel est l'[[objet (informatique)|objet]] concret qu'il faut créer et c'est là que l'objet est effectivement créé.(en C++ par exemple, par l'[[[instruction]]] '''new'''). La fabrique retourne un [[pointeur]] ''abstrait'' sur l'objet concret créé. Le code client est ainsi isolé de la création de l'objet.
Comme la fabrique retourne uniquement un pointeur abstrait, le code client qui sollicite la fabrique ne connait pas et n'a pas besoin de connaitre quel est le type concret précis de l'objet qui viens d'être créer.
 
Cela signifie en particulier que:
* Le Code client n'a aucune connaissance du type concret, ne nécessite aucun fichier header ou déclaration de classe requis par le type concret. Le code client n'interagit qu'avec la classe abstraite.
* L'ajout de nouveaux types concret dans le code client se fait en spécifiant l'utilisation d'une fabrique différente, modification qui se fait typiquement en une ligne dans un fichier.
C'est beaucoup plus simple que de changer chaque création de l'objet dans le code client .
Si toutes les fabriques sont stockées de manière globale dans un [[singleton]] et que tout le code client utilise ce singleton pour accéder aux fabriques de création d'objet, alors modifier les fabriques revient à modifier l'objet singleton.