abstract factory+adapter

17
Centre Universitaire De Souk-Ahras Institut : Sciences & Techniques Département : Sciences Réalisé par : Heraguemi kamel eddine Design Pattern (Abstract Factory & Adapter) dériger: Dr .Abdelkarim Amirate

Upload: kamel-eddine-heragmi

Post on 23-Jun-2015

736 views

Category:

Education


0 download

DESCRIPTION

deseign pattern

TRANSCRIPT

Page 1: Abstract factory+adapter

Centre Universitaire De Souk-Ahras

Institut : Sciences & Techniques

Département : Sciences

Réalisé par :

Heraguemi kamel eddine

Design Pattern

(Abstract Factory & Adapter)

dériger:

Dr .Abdelkarim Amirate

Page 2: Abstract factory+adapter

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

Page 3: Abstract factory+adapter

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

Page 4: Abstract factory+adapter

4

AbstractFactory Adapter

Page 5: Abstract factory+adapter

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

Page 6: Abstract factory+adapter

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

Page 7: Abstract factory+adapter

Abstract Factory (3/7)

7

Page 8: Abstract factory+adapter

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

Page 9: Abstract factory+adapter

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

Page 10: Abstract factory+adapter

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

Page 11: Abstract factory+adapter

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

Page 12: Abstract factory+adapter

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

Patron de structure

Page 13: Abstract factory+adapter

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

Patron de structure

Page 14: Abstract factory+adapter

14

Adapter (2/4)

Page 15: Abstract factory+adapter

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

Patron de structure

Page 16: Abstract factory+adapter

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

Patron de structure

Page 17: Abstract factory+adapter

Exmple Crier en JAVA sur Eclipse

17