当前位置: 首页 > news >正文

【设计模式】装饰器模式和适配模式

装饰器模式

装饰器模式能够很好的对已有功能进行拓展,这样不会更改原有的代码,对其他的业务产生影响,这方便我们在较少的改动下对软件功能进行拓展。

类似于 router 的前置守卫和后置守卫。

Function.prototype.before = function (beforeFn) {const _this = this;return function () {// 先执行前置函数的调用beforeFn.apply(this, arguments);// 再执行当前函数的调用const result = _this.apply(this, arguments);return result;}
}
Function.prototype.after = function (afterFn) {const _this = this;return function () {// 先执行当前函数的调用const result = _this.apply(this, arguments);// 再执行后置函数的调用afterFn.apply(this, arguments);return result;}
}
function fn() {console.log('fn')return 'fn';
}let fnn = fn.before(function () {console.log('前置函数调用')
}).after(function () {console.log('后置函数调用')
})
fnn()

适配模式

将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

比如 axios 在 nodejs 和浏览器环境下都可以使用,本质上就是使用了适配器模式。

class TencentMap {show() {console.log('渲染腾讯地图');}
}
class BaiduMap {display() {console.log('渲染百度地图');}
}
// 写一个适配器 让腾讯地图适配百度地图的方法
class TencentAdapter extends TencentMap{constructor() {super();}display() {this.show();}
}
function renderMap(map) {map.display();
}
renderMap(new TencentAdapter());
renderMap(new BaiduMap());
http://www.lryc.cn/news/427942.html

相关文章:

  • Visual Studio VS 插件之 ReSharper
  • 【二分查找】--- 进阶题目赏析
  • CSS 对齐
  • 暑假算法刷题日记 Day 10
  • 【Midjourney】AI作画提示词工程:精细化技巧与高效实践指南
  • C语言——文件
  • 视频孪生技术在智慧水利(水务)场景中的典型应用展示
  • 使用kubekey快速搭建k8s集群
  • C++——入门基础(上)
  • Spring事务失效
  • Qt QLabel标签制作弹框效果,3s后缓慢自动消失
  • JZ55 二叉树的深度
  • 视频号分销系统搭建教程,源代码+部署上线指南
  • 【python】cryptography库学习
  • 解密!抖音百万粉丝博主三维地图视频都用到了什么GIS数据和技术
  • Python知识点:如何使用Kubernetes与Python进行容器编排
  • Markdown与Word中插入图片的方法及比较
  • Vue3+Vite安装配置tailwindCss
  • 大数据学习-Spark基础入门
  • C语言:链表插入
  • xss 一些例子
  • 基于Docker compose部署Confluence 8.3.4及设置数据持久化存储的总结
  • eNSP 华为交换机生成树协议
  • flutter事件与消息通知
  • Oracle PL/SQL存储过程和函数简单示例
  • 同态加密和SEAL库的介绍(十)CKKS 参数心得 2
  • Debug-021-el-table实现分页多选的效果(切换分页,仍可以保持前一页的选中效果)
  • FPGA开发——DS18B20读取温度并且在数码管上显示
  • 电流测量分流电阻
  • MES系统:智能化排班排产的全面解决方案