码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 设计模式-适配器模式


    介绍

    • 旧接口格式和使用者不兼容
    • 中间加一个适配转换接口

    UML类图

    传统UML类图
    简化后的UML类图

    代码演示

    class Adaptee {
        specificRequest() {
            return '德国标准的插头'
        }
    }
    
    class Target {
        contructor() {
            this.adaptee = new Adaptee()
        }
        request() {
            let info = this.adaptee.specificRequest()
            return `${info}->转换器->中国标准插头`
        }
    }
    
    // 测试
    let target = new Targe()
    target.request()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    场景

    • 封装旧接口
    // 自己封装的ajax,使用方式如下:  
    ajax({
        url: '/getData',
        type: 'Post',
        dataType: 'json',
        data: {
            id: "123"
        }
    })
    .done(function(){})
    
    // 但因为历史原因,代码中全都是:$.ajax({...})
    
    // 做一层适配器
    var $ = {
        ajax: function (options) {
            return ajax(options);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • vue computed

    Original message: "{{ message }}"

    Computed reversed message: "{{ reversedMessage }}"

    • 1
    • 2
    • 3
    • 4
    var vm = new Vue({
        el: '#example',
        data: {
            message: 'Hello'
        },
        computed: {
            // 计算属性的getter
            reversedMessage: function() {
                // this指向vm实例
                return this.message.split('').reverse().join('')
            }
        }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    设计原则验证

    • 将旧接口和使用者进行分离
    • 符合开放封闭原则
  • 相关阅读:
    PHP8中查询数组中指定元素-PHP8知识详解
    Redis
    云IDE介绍——CSDN开发云
    坐标系下的运动旋量转换
    5.5-6.2读书笔记
    基于RT1052与外设AT24C02的I2C通信demo
    在 Android 10 中访问/proc/net/route权限被拒绝
    前端数据库大批量存,indexdDB使用
    面经汇总--校招--北京顺丰同城
    VCS工具学习笔记(6)
  • 原文地址:https://blog.csdn.net/linanran1027/article/details/132823994
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号