<aside>
📘
Faire collaborer des objets ayant des interfaces normalement incompatibles.
</aside>
😠Problème

Vous ne pouvez pas utiliser la librairie telle qu’elle est actuellement, car elle attend des données incompatibles avec votre application.
🙂Solution
<aside>
✅
Créer un objet spécial qui convertit l’interface d’un objet afin qu’un autre objet puisse le comprendre.
</aside>
- L’adaptateur prend une interface compatible avec un des objets existants.
- L’objet existant peut appeler les méthodes de l’adaptateur via cette interface en toute sécurité.
- Lorsque l’adaptateur reçoit un appel, il passe la requête au second objet dans un format et dans un ordre qu’il peut interpréter.

Structure
Adaptateur d’objets
Cette implémentation a recours au principe de composition : l’adaptateur implémente l’interface d’un objet et en encapsule un autre. Elle peut être utilisée dans tous les langages de programmation classiques.

- Le Client est une classe qui contient la logique métier du programme.
- L’Interface Client décrit un protocole que les autres classes doivent implémenter afin de pouvoir collaborer avec le code client.
- Le Service représente une classe que l’on veut utiliser (souvent une application externe ou héritée). Le client ne peut pas l’utiliser directement, car son interface n’est pas compatible.
- L’Adaptateur est une classe qui peut interagir à la fois avec le client et le service : il implémente l’interface client et encapsule l’objet service. L’adaptateur reçoit des appels du client via l’interface client et les convertit en appels à l’objet du service
encapsulé, dans un format qu’il peut gérer.
- Le code client n’est pas couplé avec la classe de l’adaptateur concret tant qu’il se contente d’utiliser l’interface du client. Grâce à cela, vous pouvez ajouter de nouveaux types d’adaptateurs dans le programme sans modifier le code client existant. Ce fonctionnement se révèle très pratique si l’interface d’une classe d’un service est modifiée ou remplacée : créez juste une nouvelle classe adaptateur sans toucher au code client.
Adaptateur de classe
Cette implémentation utilise l’héritage : l’adaptateur hérite de l’interface des deux objets en même temps. Vous remarquerez que cette approche ne peut être mise en place que si le langage de programmation gère l’héritage multiple, comme le C++.