概要
インターフェイスを別のインターフェイスに変換するユーザーが望む別のインターフェイスであるアダプターモードは、インターフェイスの互換性のために連携できないクラスを可能にします。
2つの実装方法
1。クラスアダプターモード:
2。オブジェクトアダプターモード:
クラスのアダプターモードのUML図は次のとおりです。
クラスのアダプターパターンは、適応されたクラスのAPIをターゲットクラスのAPIに変換します。
上の写真で設計された文字は次のとおりです。
ターゲット:これはあなたが探しているインターフェイスです。
ソースロール(ADAPEE):適応するために現在必要なインターフェイス。
アダプターロール(アダプター):これはこのモードのコアであり、アダプターはソースインターフェイスをターゲットインターフェイスに変換します。
コード例:
インターフェイスターゲット{void method1(); void method2(); //この方法を取得したいと考えています} //ソースクラスには、方法2にメソッドがありません。 class adaptee {public void method1(){system.out.println( "method1"); }} class adapter拡張adadapteeはターゲットを実装します{@override public void method2(){system.out.println( "これはターゲットメソッド"); }} public class maintest {public static void main(string arg []){ターゲットターゲット= new Adapter(); Target.Method2(); }}オブジェクトのアダプターモードのUML図は次のとおりです。
コアのアイデアは、クラスのアダプターモードと同じです。アダプタークラスのみを変更し、Adapteeクラスを継承するのではなく、Adapteeクラスへの参照を保持します。コードは次のとおりです。
インターフェイスターゲット{void method1(); void method2();} class adaptee {public void method1(){system.out.println( "method1"); }}クラスアダプターはターゲットを実装します{private adaptee adaptee; public Adapter(adaptee adaptee){this.adaptee = adaptee; } @Override public void method2(){system.out.println( "これはターゲットメソッド"); } @Override public void method1(){// todo auto-fenated method stub adaptee.method1(); }} public class maintest {public static void main(string arg []){ターゲットターゲット= new Adapter(new Adaptee()); Target.Method2(); }}アダプターモードの利点と短所:
より良い再利用性とより良いスケーラビリティ。システムは既存のクラスを使用する必要があり、そのようなインターフェイスはシステムのニーズを満たしていないため、これらの機能はアダプターモードを介してよりよく再利用できます。アダプター関数を実装するときは、自分で開発した関数を呼び出して、システムの機能を自然に拡張することができます。
短所:アダプターを使用しすぎると、システムが非常に乱雑で把握が非常に困難になります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。