Aperçu
Conversion d'une interface en une autre interface que l'utilisateur désire, le mode adaptateur permet des classes qui ne pouvaient pas fonctionner ensemble en raison de l'incompatibilité des interfaces.
Deux méthodes de mise en œuvre
1. Mode adaptateur de classe:
2. Mode adaptateur d'objet:
Le diagramme UML du mode adaptateur de la classe est le suivant:
Le modèle adaptateur de la classe convertit l'API de la classe adaptée dans l'API de la classe cible.
Les personnages conçus dans l'image ci-dessus sont:
Target: c'est l'interface que vous recherchez.
Rôle source (Adapee): l'interface qui est maintenant nécessaire pour s'adapter.
Rôle de l'adaptateur (adaptateur): il est le cœur de ce mode, et l'adaptateur convertit l'interface source en interface cible.
Exemple de code:
Interface Target {void Method1 (); vide méthode2 (); // J'espère obtenir cette méthode} // La classe source n'a pas la méthode dans la méthode2. class adaptee {public void method1 () {System.out.println ("Method1"); }} La classe Adaptateur étend Adaptee implémente Target {@Override public void method2 () {System.out.println ("Ceci est la méthode cible"); }} classe publique MAINTest {public static void main (String arg []) {cible cible = new adapter (); Target.Method2 (); }} Le diagramme UML du mode adaptateur de l'objet est le suivant:
L'idée principale est la même que le mode adaptateur de la classe. Il ne change que la classe d'adaptateur, n'hérite pas de la classe Adaptee, mais détient une référence à la classe Adaptee. Le code est le suivant:
Interface Target {void Method1 (); void method2 ();} classe adaptee {public void method1 () {System.out.println ("méthode1"); }} L'adaptateur de classe implémente Target {private adaptee adaptee; Adaptateur public (adaptee adaptee) {this.adaptee = adaptee; } @Override public void method2 () {System.out.println ("Ceci est la méthode cible"); } @Override public void Method1 () {// TODO Méthode générée automatique Stume adaptee.Method1 (); }} classe publique MAINTest {public static void main (String arg []) {cible cible = new adaptateur (new adaptee ()); Target.Method2 (); }} Avantages et inconvénients du mode adaptateur:
Meilleure réutilisabilité et meilleure évolutivité. Le système doit utiliser des classes existantes et ces interfaces ne répondent pas aux besoins du système, de sorte que ces fonctions peuvent être mieux réutilisées via le mode adaptateur. Lorsque vous implémentez la fonction de l'adaptateur, vous pouvez appeler les fonctions que vous avez développées vous-même pour développer naturellement les fonctions du système.
Inconvénients: trop d'utilisation des adaptateurs rendra le système très désordonné et difficile à saisir dans l'ensemble.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.