Adapter 适配器
已有接口A和B,在不修改A、B的情况下,A要为B所用,这个时候需要一个中间人来承担将A的接口封装成为B可以使用的接口,这里的“中间人”就是适配器——adapter
目的
转换接口
优点
- 无需改动现有代码
- 便于在原有系统上进行扩展
实例
CoyoteAdapter
CoyoteAdapter将tomcat 的connector和container进行解耦,connector和container本身属于不同的组件,使用adapter可以方便的更换container而不影响connector
实现方式
- 组合:在单继承语言中使用
- 继承:在多继承的语言里面就可以实现
UML图
代码实现
package org.lep.test.adapter;
/**
* Created by lack on 17-1-3.
*/
public interface Target {
public void service();
}
package org.lep.test.adapter;
/**
* Created by lack on 17-1-3.
*/
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void service() {
adaptee.serve();
}
}
package org.lep.test.adapter;
/**
* Created by lack on 17-1-3.
*/
public class Adaptee {
public void serve(){
System.out.println("adaptee`s serve....");
}
}
package org.lep.test.adapter;
/**
* Created by lack on 17-1-3.
*/
public class Test {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target adapter = new Adapter(adaptee);
adapter.service();
}
}