設計モード---アダプタモード


1.概念:
アダプタモード(Adapter Pattern)[GOF 95]は、あるクラスのインタフェースをクライアントが望む別のインタフェースに変換し、インタフェースが一致しないために一緒に動作できなかった2つのクラスを一緒に動作させる.
2.両形式
a.クラスのアダプタモードb.オブジェクトのアダプタモード
3.シミュレーションの問題:
ここでは、我々のプログラムがインタフェースRequestインタフェースを設計したと仮定しますが、現在は特殊なインタフェースSpecificRequstが我々の機能をよりよく完成させることができますが、それは我々の既存のRequestインタフェースと一致しません.どうやって一緒に仕事をしますか?次の例を参照してください.
3.例示例1:a.クラスのアダプタモード
インスタンスコード:
ターゲットロール:
public interface Target {
	public void request();
}

ソースロール:
public class Adaptee {
	public void specificRequest(){
		System.out.println("      ");
	}
}

アダプタの役割:
public class ClassAdapter extends Adaptee implements Target {
	
	public void request() {
		this.specificRequest();
	}
}

ユーザーロール:
public class TestClassAdapter {
	public static void main(String args[]){
		ClassAdapter adapter = new ClassAdapter();
		adapter.request();
	}
}

実行結果:
参照
必要な機能の実装
3.図示例2:b.オブジェクトのアダプタモード
インスタンスコード:
ターゲットロール、ソースロールコードは変更されません.
アダプタの役割:
public class ObjectAdapter implements Target {
	
	private Adaptee adaptee;
	
	public ObjectAdapter(Adaptee adaptee){
		this.adaptee = adaptee;
	}
	public void request() {
		adaptee.specificRequest();
	}

}

ユーザーロール:
public class TestOjbectAdapter {
	public static void main(String arg[]){
		Adaptee adaptee = new Adaptee();
		ObjectAdapter adapter = new ObjectAdapter(adaptee);
		adapter.request();
	}
}

実行結果:
参照
必要な機能の実装