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(); }}