设计模式 — 结构型模式 适配器模式

Adapter 适配器

已有接口A和B,在不修改A、B的情况下,A要为B所用,这个时候需要一个中间人来承担将A的接口封装成为B可以使用的接口,这里的“中间人”就是适配器——adapter

目的

转换接口

优点

  • 无需改动现有代码
  • 便于在原有系统上进行扩展

实例

CoyoteAdapter

CoyoteAdapter将tomcat 的connector和container进行解耦,connector和container本身属于不同的组件,使用adapter可以方便的更换container而不影响connector

实现方式

  • 组合:在单继承语言中使用
  • 继承:在多继承的语言里面就可以实现

UML图

adapter图

代码实现

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

    }
}
posted @ 2017-01-04 23:01  lacker  阅读(246)  评论(0编辑  收藏  举报