実際には、この 3 つの単語のアダプターについては誰もがよく知っているはずです。Apple の iPhone には充電プラグが提供されなくなったことはわかっています。箱にはデータ ケーブルが 1 本しか入っていないため、このデータ ケーブルを単独で使用することはできません。 220V のプラグイン ボードで充電するため、プラグイン ボードと携帯電話を接続するための新しいアダプターを購入する必要があります。
実際、ソフトウェア設計においては、開発が必要な特定のビジネス機能を備えたコンポーネントが既存のコンポーネント ライブラリにすでに存在しているにもかかわらず、現在のシステムのインターフェイス仕様と互換性がないという状況も発生することがあります。これらのコンポーネントは再開発されており、コンポーネントのコストは非常に高いため、アダプター モードはこれらの問題をうまく解決できます。
アダプター パターン: クラスのインターフェイスを顧客が望む別のインターフェイスに変換し、互換性のないインターフェイスにより連携できないクラスが動作できるようにします。
アダプターパターンにはクラス構造パターンとオブジェクト構造パターンの2種類があり、前者は後者に比べてクラス間の結合度が高く、プログラマは関連するコンポーネントの内部構造を理解する必要があります。既存のコンポーネント ライブラリがあるため、アプリケーションは比較的少数です。
利点:
クライアントはアダプターを通じてターゲット インターフェイスを透過的に呼び出すことができます
既存のクラスを再利用します。プログラマーは、元のコードを変更して既存のアダプター クラスを再利用する必要はありません。
ターゲット クラスとアダプター クラスを解決しないでください。結合することで問題が解決されます。ターゲット クラスとアダプター クラス間のインターフェイスに一貫性がない
多くのビジネス シナリオで開始と終了の原則に準拠します
欠点:
アダプターの作成プロセスは、ビジネス シナリオに基づいて十分に検討する必要があり、システムの複雑さが増す可能性があります。
オブジェクト アダプター パターンの構造: 5. アダプター パターンのコード実装A組み合わせを使用する アダプターの実装方法: 現在、ラップトップ用の三相プラグがありますが、充電には二相プラグを使用する必要があるため、そのために二相アダプターをインストールする必要があります。プラグ: 三相ソケット インターフェース:
/** * 三相插座接口 */ public interface ThreePlugIf { //使用三相电流供电 public void powerWithThree(); }
/** * 国标的二相插座 */ public class GBTowPlug { public void powerWithTwo(){ System.out.println("使用二相电流供电"); } }
/** * 笔记本 */ public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug){ this.plug = plug; } //使用插座充电 public void charge(){ plug.powerWithThree(); } }
/** * 三相转二相的插座适配器 */ public class TwoPlugAdapter implements ThreePlugIf { private GBTowPlug plug; public TwoPlugAdapter(GBTowPlug plug) { this.plug = plug; } @Override public void powerWithThree() { System.out.println("通过转换"); plug.powerWithTwo(); } }
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); } }
二相電流を介して給電変換結合方式を採用したアダプタをオブジェクトアダプタと呼びます
機能:
「アダプタ」をオブジェクトとしてアダプタクラスに結合し、対象を変更します。インターフェースのパッケージ化 アダプター
#B に対して、継承を使用してアダプターを実装します:アダプターの継承:
/** * 采用继承方式的插座适配器 */ public class TwoPlugAdapterExtends extends GBTowPlug implements ThreePlugIf{ @Override public void powerWithThree() { System.out.println("借助继承适配器"); this.powerWithTwo(); } }
public class Test { public static void main(String[] args) { GBTowPlug two = new GBTowPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); //使用继承方法 three = new TwoPlugAdapterExtends(); nb = new NoteBook(three); nb.charge(); } }
変換による
二相電流による電力供給特徴:互換性のないインターフェースを多重継承することで、対象インターフェースのマッチングを実現し、適応を実現します。単一クラスで実現継承アダプタの助けを借りて
二相電流による電力供給
継承方法をクラスアダプタと呼びます
6. アダプターパターンの適用シナリオ 以前開発したシステムには新システムの機能要件を満たすクラスがあったが、そのインターフェースは新しいシステムのインターフェースと矛盾しています
以上がJava アダプター パターンを理解して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。