「ヘッドファーストデザインパターン」の研究ノート - アダプタモード

今アダプタモードが来て、アダプタ名が示唆する、アダプタを介して他のキャラクターの役割を果たしているために、既存のコードを作ることです。私たちは、コードを見てみましょう。

ケース

アヒルや七面鳥は、レッツ・ビルドインターフェースアヒルや七面鳥インタフェース、動物が飛ぶと呼ばれ、その実装は、それぞれ2つのクラスを作成します。

public interface Duck {
    void quack();
    void fly();
}

public class MallardDuck implements Duck {
    @Override
    public void quack() {
        System.out.println("quack");
    }

    @Override
    public void fly() {
        System.out.println("fly");
    }
}

public interface Turkey {
    void gobble();
    void fly();
}

public class TurkeyAdapter implements Duck {
    Turkey turkey;

    public TurkeyAdapter(Turkey turkey) {
        this.turkey = turkey;
    }

    @Override
    public void quack() {
        turkey.gobble();
    }

    @Override
    public void fly() {
        for (int i = 0; i < 5; i++) {
            turkey.fly();
        }
    }
}

次のハイライトである、私たちのアダプターで、我々は、我々は、このクラスが実装二つの方法のアヒルのインタフェースを作成する必要があり、アヒルのように七面鳥の行為を作りたい、七面鳥はアヒルを作るために私たちの目標として働き、私たちは火を渡す必要があります鶏、アヒルラップも。だから我々は、アダプタのプロパティとして七面鳥を必要としています。このクラスの構造は、プロパティトルコ非常に明確である、アヒルインタフェースは2つのメソッドを実装します。

public class TurkeyAdapter implements Duck {
    Turkey turkey;

    public TurkeyAdapter(Turkey turkey) {
        this.turkey = turkey;
    }

    @Override
    public void quack() {
        turkey.gobble();
    }

    @Override
    public void fly() {
        for (int i = 0; i < 5; i++) {
            turkey.fly();
        }
    }
}

七面鳥が近く飛ぶので、我々はフライ5つの飛距離のアヒルを打つように、いんちき()メソッドでは、コールturkey.gobble()メソッドは、)(turkey.fly()メソッドフライと呼ばれています。

次のようにアダプタを使用しているお客様は、次のとおりです。

  • ターゲット・インタフェース・メソッドを介してお客様には、アダプターの要求を開始アダプターを呼び出します。
  • アダプタインタフェースアダプタは、1人以上のコール・インタフェースに要求を変換するようになっています。
  • 顧客は、呼び出しの結果を受けたが、これのすべてを認識していないが、翻訳者としてのアダプタ行為です。

今、Adapterパターンの定義での見てみましょう:

クラスのアダプタモードインターフェイスは、顧客の期待に別のインターフェースに変換されます。アダプタので、元のインタフェースはクラスと互換性がないことをシームレスに共同作業を行うことができます。

互換性のないインターフェースが互換性になるように、このモデルは、インタフェース変換アダプタを介して作成することができます。これは、顧客がインターフェースの実装から分離することができます。

公開された26元の記事 ウォンの賞賛2 ビュー2326

おすすめ

転載: blog.csdn.net/qq_42909545/article/details/104971524