设计模式 - 适配器模式

适配器模式(包装器: 接口转换):将类的接口转换成别的规格,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
核心:接口规格转换,对于线上系统,已有稳定运行的源角色和目标角色,在不改动源角色和目标角色代码的前提下,将源角色对象用于目标角色的接口
角色:

  • 适配器(Adapter):处理转换逻辑,需实现目标角色的接口(即:对于客户端,适配器行使目标角色功能)
  • 源角色(Adaptee):被转换的角色,数据来源方
  • 目标角色(Target):目标角色,数据接收方(应该以接口方式出现)

PS:架构设计中,尽量遵循依赖倒置原则,否则将影响到系统的扩展性和维护性

类适配器(继承关系)

类适配器:①继承源角色②实现目标接口

// 适配器类 - 完成数据转换,在客户端被当作Target行使功能
public class Adapter extends Adaptee implements Target{
    @Override
    public int request() {
        return super.specificRequest() / 2;
    }
}

public class Test {
    public static void main(String[] args) {
        Target target = new Adapter();
        System.out.println(target.request());
    }
}

对象适配器(组合关系)

对象适配器:通过关联委托关系与源角色通信②实现目标接口

// 维护源角色的引用(关联委托关系 - 组合)
public class Adapter implements Target {
    private Adaptee adaptee = null;

    public Adapter(Adaptee adaptee){
        this.adaptee = adaptee;
    }

    @Override
    public int request() {
        return adaptee.specificRequest() / 2;
    }
}

public class Test {
    public static void main(String[] args) {
        Target target = new Adapter(new Adaptee());
        System.out.println(target.request());
    }
}
// 源角色
public class Adaptee {
    public int specificRequest(){
        return 220;
    }
}

//目标角色接口
public interface Target {
    int request();
}
posted @ 2020-11-29 22:43  祁奇  阅读(76)  评论(0编辑  收藏  举报