• 设计模式 适配器模式


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

    • 适配器(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();
    }
    
  • 相关阅读:
    《DSP using MATLAB》 示例 Example 9.12
    《DSP using MATLAB》示例 Example 9.11
    《DSP using MATLAB》示例 Example 9.10
    《DSP using MATLAB》示例Example 9.9
    《DSP using MATLAB》示例 Example 9.8
    《DSP using MATLAB》示例Example 9.7
    《DSP using MATLAB》示例 Example 9.6
    《DSP using MATLAB》示例Example 9.5
    《DSP using MATLAB》示例 Example 9.4
    (转载)【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058630.html
Copyright © 2020-2023  润新知