IHEC - Carthage
Adapter
AL - 2BI
Design Patterns (support de cours)
L'adaptateur est un patron de conception structurel qui permet aux objets avec des
interfaces incompatibles de collaborer.
1. Structure
Il existe deux structures pour la patrons adapter, chaque structure a des avantages par
rapport à l'autre. La première est l'adaptation par objet, cette adaptation se base sur
l'agrégation. La deuxième est l'adaptation par classe, elle se base sur l'héritage entre
l'adapter et l'objet à adapter.
1.1. Adaptation par objet
Cette implémentation utilise le principe de l'agrégation : l'adaptateur implémente l'interface
d'un objet et enveloppe l'autre. Il peut être implémenté dans tous les langages de
programmation courants.
Diagramme
description
1. Le client est une classe qui contient la logique métier existante du programme.
2. L'interface client décrit un protocole que les autres classes doivent suivre pour
pouvoir collaborer avec le code client.
3. Le service est une classe utile (généralement tierce ou héritée). Le client ne peut pas
utiliser cette classe directement car elle possède une interface incompatible.
4. L'adaptateur est une classe capable de fonctionner à la fois avec le client et le service:
Adapter Page 1
AL – Les patrons de conception Sur 2
il implémente l'interface client, tout en encapsulant l'objet de service. L'adaptateur
reçoit les appels du client via l'interface de l'adaptateur et les traduit en appels à
l'objet de service encapsulé dans un format qu'il peut comprendre.
1.2. Adaptation par classe
Cette implémentation utilise l'héritage : l'adaptateur implémente l'interface d'un objet et
hérite de l'autre. Il peut être implémenté dans tous les langages de programmation courants.
Diagramme
description
Dans ce cas l'adaptateur se contente d'appeler sa propre méthode (qu'il a hérité de la classe
Service).
2. Pseudo code
(voir l'exemple de cours)
3. Application (quand utiliser)
1. Utilisez la classe Adapter lorsque vous souhaitez utiliser une classe existante, mais
que son interface n'est pas compatible avec le reste de votre code.
2. Utilisez le modèle lorsque vous souhaitez réutiliser plusieurs sous-classes existantes
dépourvues de certaines fonctionnalités communes qui ne peuvent pas être ajoutées à
la superclasse. (nécessite des enveloppeurs / implémentation semblable au patron
décorateur).
Adapter Page 2
AL – Les patrons de conception Sur 2