• 设计模式 适配器模式


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

    • 适配器(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();
    }
    
  • 相关阅读:
    Tensorflow源码解析2 -- 前后端连接的桥梁
    Tensorflow源码解析1 -- 内核架构和源码结构
    Python保存json文件并格式化
    如何在没有https环境下使用webrtc
    github提交代码不用输入账号密码的解决方案
    使用nodeJs在本地搭建最简单的服务
    ubuntu16.04 安装 nginx 服务器
    git pull和git pull --rebase的使用
    Linux 下各个目录的作用及内容
    阿里云服务器(Ubuntu16.04 64位)远程连接
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058630.html
Copyright © 2020-2023  润新知