0% ont trouvé ce document utile (0 vote)
65 vues8 pages

Adapter Pattern

Le patron Adapter permet de convertir l'interface d'une classe à une autre, facilitant ainsi la collaboration entre des classes ayant des interfaces incompatibles. Un exemple illustratif est l'adaptation d'un dinde pour qu'il se comporte comme un canard en implémentant l'interface requise. Le diagramme de classes montre comment l'adaptateur interagit avec le client et l'adaptee.

Transféré par

anouaarbenyahya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
65 vues8 pages

Adapter Pattern

Le patron Adapter permet de convertir l'interface d'une classe à une autre, facilitant ainsi la collaboration entre des classes ayant des interfaces incompatibles. Un exemple illustratif est l'adaptation d'un dinde pour qu'il se comporte comme un canard en implémentant l'interface requise. Le diagramme de classes montre comment l'adaptateur interagit avec le client et l'adaptee.

Transféré par

anouaarbenyahya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le patron

"Adapter"

136
Riadh BEN HALIMA [Design patterns]
Le patron adapter :
Les adaptateurs (1/7)

Adaptateur Câble American du PC


Prise Européenne

L’adaptateur convertit une


interface à une autre

137
Riadh BEN HALIMA [Design patterns]
Le patron adapter :
Les adaptateurs dans l’OO (2/7)
Notre Classe du
système vendeur
existant

L’interface ne correspond par à ce qu’on a déjà codé.


Ça ne va pas marché!
(supposant qu’on ne peut pas changer de vendeur)

Notre Adaptateur Classe du


système vendeur
existant

Même code Nouveau code Même code

138
Riadh BEN HALIMA [Design patterns]
Le patron adapter :
Dinde et Canard (3/7)
 Supposant que le dinde marche et cancane comme le canard
Un canard peut cancaner et voler Une simple implémentation du comportement du canard

public interface Duck{ public class MallardDuck implements Duck{


void quack(); public void quack(){
void fly(); System.out.println("Quack");}
} public void fly(){
System.out.println("Fly");}
}

public interface Turkey{ Le dinde ne cancane pas, mais glougloute


void gobble();
void fly(); Le dinde peut voler (courte distance)
}

public class WildTurkey implements Turkey{


public void gobble(){
System.out.println("Gobble");}
public void fly(){
System.out.println("Fly for a short distance");}
139 }
Riadh BEN HALIMA [Design patterns]
Le patron adapter :
L’adaptateur du dinde(4/7)
 Supposons qu’on a un manque de canards et on va utiliser des
dindes à leur pace  Il faut écrire un "adapter"
Respecter l’interface des canards

public class TurkeyAdapter implements Duck{


private Turkey turkey;
public TurkeyAdapter(Turkey turkey){
this.turkey=turkey;}
Une référence vers l’objet à adapter
@Override
public void quack(){
turkey.gobble();
}
@Override Translation des méthodes
public void fly(){
for(int i=0;i<5;i++)
{turkey.fly();}
}
}

140
Riadh BEN HALIMA [Design patterns]
Le patron adapter :
Testons l’adaptateur(5/7)
public class TestAdapter{
public static void main (String[] arg)
{
Duck mallard= new MallardDuck();
Turkey wild = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(wild);
Duck[] tab = new Duck[2];
tab[0] = mallard;
tab[1] = turkeyAdapter ;
for(int i =0; i<2;i++)
{
tab[i].quack();
tab[i].fly();
}

}
}
 Donner le résultat d’exécution de cette classe

141
Riadh BEN HALIMA [Design patterns]
Le patron adapter (6/7)

 Définition: Adapter
 Le patron Adapter convertit l’interface d’une classe à
une autre interface que le client attend. Les adaptateurs
permettent aux classes, aillant des interfaces incompatibles,
de travailler ensemble.

142
Riadh BEN HALIMA [Design patterns]
Adapter :
Le diagramme de classes du patron (7/7)

<<interface>>
Client Target
request() L’Adapter implémente
l’interface Target

Le client voit seulement


Adapter Adaptee
l’interface Target.
request() specificRequest()

L’adapter est composé Toutes les requêtes sont


d’un Adaptee déléguées à Adaptee

143
Riadh BEN HALIMA [Design patterns]

Vous aimerez peut-être aussi