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