1. Centre Universitaire De Souk-Ahras
Institut : Sciences & Techniques
Département : Sciences
Design Pattern
(Abstract Factory & Adapter)
dériger:
Réalisé par : .Abdelkarim Amirate
Dr
Heraguemi kamel eddine
2. Définition
“Each pattern describes a problem which occurs over
and over again in our environment, and then describes
the core of the solution to that problem, in suh a way
that you can use this solution a million times over,
without ever doing it the same way twice”[Alexander,
1977]
Un patron de conception a 4 constituent :
• nom du patron: un mot/phrase que l’on utilise qui réfère une
famille de problèmes, une famille de solutions, et leur impact.
• problème: une description des problèmes typiques de conception
• solution: décrit les éléments constitutifs de la solution, leur
responsabilités, relations, et intéractions
• conséquences: impact et compromis résultant de l’application du
patron
2
3. Types de patrons
Créationnels:AbstractFactory,Singleton, Builder,…
• Font l’abstracion du processus l’instanciasion afin de rendre un
système indépendant de la façon dont ses objets sont créés et
représentés;
Structurels: Adapter, Bridge, Composite, Decorator,
Façade,…
• Se concentrent sur la façon dont les classes et les objets sont
composés pour obtenir de plus grandes structures
Comportementaux: Iterator, Visitor, Observer, State,
trategy, Mediator, …
• Décrivent les modèles de communicaton et interacton entre les
objets
3
5. Abstract Factory (1/7)
Idée
◦ Fournir une interface pour créer des familles d’objets
associés sans connaître leur classe réelle.
◦ La création d’objets regroupés en familles sans devoir
connaître les classes concrètes destinées à la création
de ces objets.
Synonymes : Kit, Fabrique abstraite, Usine
abstraite
5
6. Abstract Factory (2/7)
Champs d’application
◦ Bibliothèque fournie avec seulement leurs interfaces,
pas leurs implémentations
(bibilothèque graphique, look-and-feel)
◦ Un système utilisant des produits a besoin d’être
indépendant de la façon dont ces produits sont créés
et regroupés ;
◦ Un système est paramétré par plusieurs familles de
produits qui peuvent évoluer.
6
8. Abstract Factory (4/7)
Structure
◦ La fabrique
AbstractFactory déclare l’interface pour les opérations qui
créent des objets abstraits
ConcreteFactory implémente les opérations qui crée les objets
concrets
◦ Les objets (plusieurs types)
AbstractProduct déclare une interface pour un type d’objet
ConcreteProduct définit un objet qui doit être créé par la
fabrique concrète correspondante et implémente l’interface
AbstractProduct
◦ L’utilisateur
Client utilise seulement les interfaces déclarée par
AbstractFactory et par les classes AbstractProduct
8
9. Abstract Factory (5/7)
Collaborations
◦ Normalement, une seule instance de fabrique
concrète est créée à l’exécution. Cette fabrique
crée les objets avec une implémentation
spécifique. Pour créer différents sortes
d’objets, les clients doivent utiliser différentes
fabriques concrètes.
◦ La fabrique abstraite défère la création des
objets à ses sous-classes concrètes
9
10. Abstract Factory (6/7)
Conséquences
◦ Isolation des classes concrètes (seules les
classes abstraites/interface sont connues)
◦ Échange facile des familles de produit
◦ Encouragement de la cohérence entre les
produits
10
11. Abstract Factory (7/7)
Implémentation
◦ Les fabriques sont souvent des singletons
◦ Ce sont les sous-classes concrètes qui font la
création, en utilisant le plus souvent une
Factory Method
◦ Si plusieurs familles sont possibles, la
fabrique concrète utilise Prototype
11
12. Patron de structure
Adapter (1/4)
Idée
◦ Convertir l’interface d’une classe en une autre
interface qui est attendue par un client.
◦ Permet de faire collaborer des classes qui n’auraient
pas pu le faire à cause de l’incompatibilité de leurs
interfaces
Exemple
◦ Une classe de bibliothèque conçue pour la réutilisation
ne peut pas l’être à cause d’une demande spécifique
de l’application
◦ Les Adapter de java : MouseAdapter,
WindowAdapter,etc.
12
13. Patron de structure
Adapter (2/4)
Structure
◦ Une cible (Target) définit l’interface spécifique à
l’application que le client utilise
◦ Le Client collabore avec les objets qui sont
conformes à l’interface de Target
◦ La classe à adapter (Adaptee) est l’interface
existante qui a besoin d’adaptation
◦ L’adaptateur (Adapter) adapte effectivement
l’interface de Adaptee à l’interface de Target par
traduction des accès (appels de méthode)
13
15. Patron de structure
Adapter (3/4)
Conséquences
◦ Pour la classe de l’objet qui adapte
Pas possible d’adapter une classe et ses sous-classes
Mais redéfinition possible du comportement (sous-
classe)
◦ Pour l’objet qui adapte
Un adapter peut travailler avec plusieurs Adaptees
Plus difficile de redéfinir le comportement
d’Adaptee (sous-classer puis obliger Adapter a
référencer la sousclasse)
15
16. Patron de structure
Adapter (4/4)
Implémentation
◦ Par héritage (multiple) de la classe à adapter,
en y ajoutant les méthodes de l’interface cible
et en assurant les appels corrects aux méthodes
de la classe à adapter
◦ Par composition, selon le même principe (faire
correspondre les appels de méthode) sauf que
la classe à adapter est un champ de la classe
qui adapte
16