public class Source {
public void method1(){
System.out.print("this is original method!");
}
}
public interface Targetable {
public void method1();
public void method2();
}
public class Adapter extends Source implements Targetable {
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.print("this is the targetable method!");
}
}
public class AdapterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Targetable target=new Adapter();
target.method1();
target.method2();
}
}
输出:
this is original method!
this is the targetable method!
这样Targetable接口的实现类就具有了Source类的功能。对象的适配器模式基本思路和类的适配器模式相同,只是将Adapter类作修改,这次不继承Source类,而是持有Source
类的实例,以达到解决兼容性的问题。我们修改Adapter类的源码:
public class Wrapper implements Targetable {
private Source source;
public Wrapper(Source source){
super();
this.source = source;
}
@Override
public void method2() {
System.out.println("this is the targetable method!");
}
@Override
public void method1() {
source.method1();
}
}
测试类:
public class AdapterTest {
public static void main(String[] args) {
Source source = new Source();
Targetable target = new Wrapper(source);
target.method1();
target.method2();
}
}
输出:
this is original method!
this is the targetable method!