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

Contenu supprimé Contenu ajouté
m typo
m - autoliens
Ligne 1 :
La '''fabrique abstraite''' est un [[motif de conception]] ''(design pattern)'' [[Motif de conception#Création|créationnel]] utilisé en [[génie logiciel]].
 
Une fabrique abstraite encapsule un groupe de [[fabrique (Motifmotif de conception)|fabrique]]s particulières ayant une thématique commune. Le code client crée une implémentation concrète de la [[fabrique abstraite (Motif de conception)|fabrique abstraite]], puis utilise les interfaces génériques pour créer des objets concrets de la thématique. Le client ne se préoccupe pas de savoir quels objets concrets il obtient de chacune de ces [[fabrique (Motif de conception)|fabrique]]s, car il n'utilise que les interfaces génériques de leurs produits. Ce motif de conception sépare les détails d'implémentation d'un ensemble d'objets, de leur usage générique.
 
Par exemple, une [[Fabrique Abstraite (Motif de conception)|fabrique abstraite]] implantée par une classe ''documentCreator'' fournit une interface pour créer un certain nombre de produits (ex: ''createLetter()'' et ''createResume()''). Le système a à disposition des versions concrètes dérivées de la classe ''documentCreator'', par exemple ''fancyDocumentCreator'' et ''modernDocumentCreator'', qui possèdent chacune leur propre implémentation de ''createLetter()'' et ''createResume()'' pour créer des objets comme ''fancyLetter'' ou ''modernResume''. Chacun de ces produits dérive d'une simple [[classe abstraite]] comme ''Letter'' ou ''Resume'', dont le client a connaissance. Le code client obtient une instance de ''documentCreator'' et appelle ses méthodes de fabrication. Tous les objets sont ensuites créés par le même ''documentCreator'' et ont la même thématique (par exemple, ils seront tous ''fancy''). Le client a simplement besoin de savoir manipuler les classes abstraites ''Letter'' et ''Resume'', et non la version particulière obtenue par la fabrique concrète.
 
Une '''fabrique''' est un endroit du code où sont construits des objets. L'emploi de ce motif de conception permet d'isoler la création des objets de leur usage. Ainsi, on peut utiliser de nouveaux types dérivés sans rien changer au code qui utilise l'objet de base.