« Bonjour, Amigo ! Aujourd'hui, je vais te dire exactement ce qu'un est adaptateur'. J'espère qu'après avoir découvert ce sujet, tu auras une meilleure compréhension des flux d'entrée/sortie. »

Imagine que ton programme utilise deux frameworks écrits par d'autres programmeurs/entreprises. Les deux sont très bons et appliquent les principes de la POO : abstraction, polymorphisme, encapsulation. Ensemble, ils couvrent presque entièrement ce que ton programme a besoin de faire. Il ne te reste qu'une tâche simple. Tu dois passer les objets créés par un framework à l'autre. Mais les deux frameworks sont complètement différents et « ne se connaissent pas entre eux » : ils n'ont aucune classe en commun. Tu dois te débrouiller pour convertir les objets d'un framework en objets de l'autre.
Cette tâche peut être élégamment accomplie en appliquant la technique (modèle de conception) appelée « adaptateur » :
Code Java | Description |
---|---|
|
Cela reflète le modèle de conception d'adaptateur. Pour faire simple, l'idée est que MyClass convertit (adapte) une interface en l'autre. |
« Tu pourrais me donner un exemple plus spécifique ? »
« Très bien. Disons que chaque framework a sa propre interface de 'liste' unique. Ça pourrait ressembler à ceci : »
Code Java | Description |
---|---|
|
Code du premier framework (Alpha) AlphaList est une des interfaces qui permet au code du framework d'interagir avec le code qui utilise le framework. |
|
AlphaListManager AlphaListManager est une classe dans le framework. Sa méthode createList crée un objet AlphaList |
|
Code du second framework (Beta). BetaList est une des interfaces qui permet au code du framework d'interagir avec le code qui utilise le framework. BetaSaveManager est une classe dans le framework. Sa méthode saveList enregistre un objet BetaList |
|
La classe 'adaptateur' qui convertit l'interface AlphaList en interface BetaList La classe ListAdapter implémente l'interface BetaList du second framework. Quand quelqu'un appelle ces méthodes, le code de la classe 'transmet' les appels à la variable list, qui est une AlphaList du premier framework. Un objet AlphaList est passé au constructeur ListAdapter La méthode setSize fonctionne selon les règles suivantes : si la taille de la liste doit être augmentée, ajouter des éléments vides (null). Si la taille de la liste doit être réduite, supprimer les éléments à la fin. |
|
Un exemple d'utilisation possible |
« J'ai vraiment aimé ton dernier exemple en particulier. Très concis et clair. »
GO TO FULL VERSION