解析:アダプタモード


アダプタモード定義:1つのクラスのインタフェースをクライアントが期待する別のインタフェースに変換し、インタフェースが一致しないため一緒に動作できない2つのクラスが一緒に動作できるようにします.クラスのアダプタモードとオブジェクトのアダプタモードの2つの形式があります.
クラスのアダプターモード:実装メカニズムは、アダプターがターゲットインタフェースTargetとアダプターインタフェースAdapteeの特性(アダプターインタフェースTargetを実装するためにアダプターを継承する)を持っている可能性があります.これにより、アダプターには2つの共通の属性と方法があります.このアダプタアダプタは、使用時に直接使用できます.
オブジェクトのアダプタ:オブジェクトアダプタは、アダプタに適合するオブジェクトAdapteeを対象とし、適合するオブジェクトAdapteeのオブジェクトをパラメータとしてアダプタに入力することができます.これにより、アダプタAdapterと適合するオブジェクトAdapteeは弱い結合(結合関係は依然として存在する)を形成し、パラメータ化が有益に拡張されます.
(1)ターゲットインタフェースTarget
public interface Target {
	void request();
}

(2)適切なインタフェースAdaptee
public class Adaptee {
	public void specificRequest(){
		System.out.println("specificRequest    ");
	}
}

(3)アダプターの役割Adapter----オブジェクトレベル
public class Adapter implements Target{
	private Adaptee adaptee;
	public Adapter(Adaptee adaptee){
        this.adaptee = adaptee;
    }
	@Override
	public void request() {
		adaptee.specificRequest();
	}
}

(4)クラスアダプタHeavyAdapter---クラス
public class HeavyAdapter extends Adaptee implements Target{
	@Override
	public void request() {
		this.specificRequest();
	}
}

(5)テスト
public class Test {
	public static void main(String[] args) {
		/*         */
		Adaptee adaptee = new Adaptee();
		Target tar = new Adapter( adaptee);
		tar.request();
		/*        */
		Target hTar = new HeavyAdapter();
		hTar.request();
	}
}

なぜアダプタが必要ですか?AdapteeはTargetとは関係がないため、2つの間で適切なアダプタを作成する必要があります.分析から、アダプタはAdapteeを所有または継承し、Targetインタフェースを実現しなければ、適切なアダプタを作成できないことがわかります.
注意:資料リファレンスアダプタ(Adapter)モード