zoukankan      html  css  js  c++  java
  • 设计模式 适配器模式

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

    • 适配器(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();
    }
    
  • 相关阅读:
    为 Jenkins 配置 .NET 持续集成环境
    树莓派连接GPS模块
    杂记
    大型网站架构系列:电商网站架构案例
    我的心博客。
    555555555555111
    powershell 环境变量只有当前会话起作用问题
    powershell 下独立silent 安装 浏览器问题
    python编码格式
    scss教程推荐
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058630.html
Copyright © 2011-2022 走看看