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

Contenu supprimé Contenu ajouté
→‎Structure : image fixed
Piku (discussion | contributions)
m correction lien rouge
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 [[fabriqueFabrique (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, 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 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.