ホームページ  >  記事  >  Java  >  Javaデザインパターンのアダプタパターンの実装方法

Javaデザインパターンのアダプタパターンの実装方法

WBOY
WBOY転載
2023-04-25 10:37:061494ブラウズ

    アダプター パターンとは

    アダプター パターン (Adapter) は次のように定義されます。 クラスのインターフェイスを顧客が必要とする別のインターフェイスに変換します。これにより、インターフェースに互換性がないために連携できない元のクラスが連携できるようになります。アダプタパターンにはクラス構造パターンとオブジェクト構造パターンの2種類があり、前者は後者に比べてクラス間の結合度が高く、プログラマは既存のコンポーネントライブラリ内の該当コンポーネントの内部構造を理解する必要があるため、比較的まれに使用されます。

    利点

    1. クライアントはアダプターを通じてターゲット インターフェイスを透過的に呼び出すことができます。

    2. 既存のクラスが再利用される プログラマは、元のコードを変更して既存のアダプター クラスを再利用する必要はありません。

    3. ターゲット クラスとアダプター クラスの間のインターフェイスの不一致の問題を解決するには、ターゲット クラスとアダプター クラスを分離します。

    4. 多くのビジネス シナリオで、開始と終了の原則を遵守します。

    欠点

    1. アダプターの作成プロセスはビジネス シナリオと合わせて包括的に考慮する必要があるため、システムが複雑になる可能性があります。

    2. コードの読み取りが難しくなり、コードの可読性が低下します。アダプターを過度に使用すると、システム コードが乱雑になります。

    ナレッジポイント

    クラス アダプター パターン: 多重継承を使用して実装できます。たとえば、C では、現在のシステムのビジネス インターフェイスと既に作成されているコンポーネントの両方を継承するアダプター クラスを定義できます。インターフェイス; Java は多重継承をサポートしていませんが、既存のコンポーネント ライブラリにすでに存在するコンポーネントを継承しながら、現在のシステムのビジネス インターフェイスを実装するアダプター クラスを定義できます。

    オブジェクト アダプター モード: 既存のコンポーネント ライブラリに実装されているコンポーネントをアダプター クラスに導入できます。アダプター クラスは、現在のシステムのビジネス インターフェイスも実装します。では、その基本構造を紹介しましょう。

    アダプター モードの実装

    ケース: ホンマオはファイア クリスタルを使用してファイア ダンス旋風剣 Qi をトリガーします

    ターゲット インターフェイス: Changhong Sword Qi

    適応者のタイプ: Fire Dance Whirlwind Sword Qi

    アダプターの種類: Fire Crystal

    Hongmao は現在 Changhong Sword Qi しか起動できませんが、火の Wu Xuanfeng Sword Qi

    を起動したいと考えています。ファイアクリスタルの力を使用できるのは、Changhong Sword Qi を Fire Wu Xuanfeng Sword Qi に変換する場合のみです。

    注: Huowu Xuanfeng Sword Qi を Changhong Jianqi に適応させるためにここにいます。

    クラス アダプター

    Changhong Jianqi

    Changhong Jianqi をアクティブにする抽象メソッドを含む、Changhong Jianqi のインターフェイスを宣言します

    public interface Chang {
        void chang();
    }
    Fire Dance Whirlwind Sword Qi

    Fire Dance Whirlwind Sword Qi カテゴリ、火舞旋風剣気の発動方法を宣言。

    public class Huo {
        public void huo() {
            System.out.println("火舞旋风剑气");
        }
    }
    火晶石

    火晶石クラスは、火舞旋風剣 Qi クラスを継承し(目的:継承後のクラス内のメソッドが使用可能)、長紅剣 Qi を実装します。インターフェイス(目的:Changhong Sword Qiの起動を実現する方法)。長紅剣気の発動方法のうち、火舞旋風剣気の発動方法が用いられる。

    public class JingShi extends Huo implements Chang {
        @Override
        public void chang() {
            huo();
        }
    }
    Test
    public class Demo {
        public static void main(String[] args) {
            Chang haha = new JingShi();
            haha.chang();
        }
    }

    Javaデザインパターンのアダプタパターンの実装方法

    オブジェクト アダプタ

    Changhong Jianqi

    Changhong Jianqi のインターフェイスを宣言します。 Changhong Sword Qi

    public interface Chang {
        void chang();
    }
    火狐旋風剣 Qi

    Fire Dance Whirlwind Sword Qi クラスは、Fire Dance Whirlwind Sword Qi を起動するメソッドを宣言します。

    public class Huo {
        public void huo() {
            System.out.println("火舞旋风剑气");
        }
    }
    ファイア クリスタル ストーン

    ファイア クリスタル ストーン クラスは、Changhong Sword Qi インターフェイスを実装し、Fire Dance Whirlwind Sword Qi のプロパティを宣言し、Changhong Sword Qi を刺激するメソッドを実装します。火舞旋風剣気の発動方法は長紅剣気の発動方法に含まれます。

    public class JingShi implements Chang {
        private Huo huo;
        JingShi() {
        }
        JingShi(Huo huo) {
            this.huo = huo;
        }
        @Override
        public void chang() {
            huo.huo();
        }
    }
    テスト

    Fire Dance Whirlwind Sword Qi オブジェクトを新規作成し、Fire Crystal Stone オブジェクトを新規作成し、Fire Dance Whirlwind Sword Qi オブジェクトを Fire Crystal Stone オブジェクトに渡します。

    rreeee

    Javaデザインパターンのアダプタパターンの実装方法

    以上がJavaデザインパターンのアダプタパターンの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。