适配器模式,正如适配器这个名字一样,起一个转换的作用。目的是通过接口转化,使得新系统和老系统可以正常交互。适配器模式是一种结构型模式。
适配器模式类图:
[img]http://dl.iteye.com/upload/attachment/364532/87dc220e-6d9c-34b2-9864-bed07b82adcf.jpg[/img]
具体实现demo:
新系统:
实现:
老系统:
实现:
适配器类:
测试类:
说明:老系统参数为int ,新系统接收输入为string,接口不匹配,通过adapter的转化之后,使得新老系统可以交互了。另外,jdk 1.6中 Runable task 转成 Callable task就是一个典型的适配器模式,其中 RunnableAdapter这个类就是适配器。
适配器模式类图:
[img]http://dl.iteye.com/upload/attachment/364532/87dc220e-6d9c-34b2-9864-bed07b82adcf.jpg[/img]
具体实现demo:
新系统:
package adapterPattern;
public interface NewSystem {
public void doAnotherthing(String input);
}
实现:
package adapterPattern;
public class NewSystemImpl implements NewSystem{
public void doAnotherthing(String input) {
System.out.println("接口参数转换后,我能使用了哈");
}
}
老系统:
package adapterPattern;
public interface OldSystem {
public int doSomething();
}
实现:
package adapterPattern;
public class OldSystemImpl implements OldSystem{
public int doSomething() {
System.out.println("我只能返回整型值");
return 0;
}
}
适配器类:
package adapterPattern;
public class Adapter {
public String convertMethod(int input){
return Integer.toString(input);
}
}
测试类:
package adapterPattern;
public class AdapterPatternTest{
public static void main(String[] args){
OldSystemImpl oldSystem = new OldSystemImpl();
NewSystemImpl newSystemImpl = new NewSystemImpl();
Adapter adapter = new Adapter();
newSystemImpl.doAnotherthing(adapter.convertMethod(oldSystem
.doSomething()));
}
}
说明:老系统参数为int ,新系统接收输入为string,接口不匹配,通过adapter的转化之后,使得新老系统可以交互了。另外,jdk 1.6中 Runable task 转成 Callable task就是一个典型的适配器模式,其中 RunnableAdapter这个类就是适配器。