I.はじめに
私たちは、「グラインドデザインモード」の定義を見て:
クライアントは別のインターフェイスを期待していたクラスのインタフェースを変換します。Adapterパターンは、そうでないため、互換性のないインタフェースのこれらのクラスが一緒に働くことができない一緒に動作するようになります。
変換試合、多重化機能 - これは、アダプタモードの本質です。
それを理解するには?それは、新しいインターフェイスは、古いインターフェースは今、質問がある、古いインターフェースの実装クラスは、新しいインターフェイスを達成するために取るているかの機能を実装する必要があり、です。
ローカル変数があれば、すべてOKを使用することができますとして使用することができ、メンバ変数として使用することができます方法は非常に簡単です、それはアダプタに古いインタフェースを実装するクラスです。次に、新しいアダプタインタフェースを実装し、アダプタ@Overide方法は、機能性を達成するために、古いインターフェイスを実装するクラスを呼び出します。
第二に、構造
1、Client--呼び出し側
2、Target--ターゲットインタフェース、必要なインタフェースアダプタ
ターゲット・インタフェースを達成するために3、Adapter--アダプタ
4、Adaptee--は既に、インターフェイスを既存の需要を満たすために、インターフェイスは、矛盾と目的です。アダプタは、その上のターゲット・インタフェースの機能を依存しています。
第三に、私が実現しました
次のように1は、最初にすべての私たちは、インタフェースPastInterfaceを定義します。
パッケージのアダプタ。 パブリック インターフェースPastInterface { 公共 ボイドpast1(); 公共 ボイドpast2(); }
2次のように、簡単な実装クラスは次のとおりです。
パッケージアダプタ; パブリック クラス PastImpl 実装がPastInterface { PastImpl(){ System.out.printlnは( "私はPastImplインターフェースを実装します" ); }
公共 ボイドpast1(){ // TODO自動生成されたスタブメソッド のSystem.out.println(「第一のインタフェースを動作させる従来の方法」); } 公共 ボイドpast2(){ // TODO自動生成されたメソッドスタブ のSystem.out .println( "第二作業インタフェース過去" ); } }
図3は、クライアントが呼び出したときに、非常に簡単です:
パッケージのアダプタ。 パブリック クラスクライアント{ 公共 静的 ボイドメイン(文字列[]引数){ PastInterface過去 = 新しいPastImpl()。 past.past1(); past.past2(); } }
4、次のように
私はPastImplインタフェースを実現する
最初の過去のインターフェースを働い
二過去のインターフェースを作業します
5、もはや過去のものの関数に新しいインタフェースを使用するために、変更する必要があり、次のように新しいインタフェースは次のとおりです。
パッケージのアダプタ。 パブリック インターフェースPresentInterface { 公共 ボイドpresent1(); 公共 ボイドpresent2(); }
6、アダプタモードでは、問題を解決することです。
パッケージのアダプタ。 パブリック クラスアダプタが実装PresentInterface { PastInterface過去 = 新しいPastImplを(); 公共 ボイドpresent1(){ // TODO自動生成方法スタブ past.past1()。 } 公共 ボイドpresent2(){ // TODO自動生成方法スタブ past.past2()。 } }
上記、アダプタクラスは、その方法を達成するために、インタフェースPresentInterface、元インターフェイスメソッドを実装して、本機能に、シンプルコンバータのように、「薬」として本来の機能に関するパッケージを説明。
7.このように、次のようにクライアントは、呼び出したとき:
用パッケージ変更アダプタ、 パブリック クラスクライアント2 { 公共 静的 ボイドメイン(文字列[]引数){ // アダプタは、新しいインタフェースので、アダプタへの直接コールの機能を実現するため、アダプターを作成する方法。 アダプタ=アダプタ新しい新しいアダプタ(); adapter.present1(); adapter.present2(); } }
最終結果は、元の結果に差はありません。
ます。https://www.cnblogs.com/zrtqsk/p/3617285.htmlで再現