【设计模式】策略模式和代理模式

news/2024/10/18 6:11:47/

策略模式

策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

该模式主要解决在有多种算法相似的情况下,使用 if… else … 所带来的复杂和难以维护。它的优点是算法可以自由切换,同时可以避免多重 if… else 判断,且具有良好的扩展性。

类似于我们在路由的匹配使用策略模式。前端应用在转换后端数据为更优雅的页面展示信息。

const strategy = {"S": function (salary) {return salary * 4;},"A": function (salary) {return salary * 3;},"B": function (salary) {return salary * 2;}
}
function claBonus(level, salary) {return strategy[level](salary);
}console.log(claBonus("S", 100))
console.log(claBonus("A", 100))

代理模式

es6 中的 proxy 就是代理模式的一个非常好的体现。

class Star {play() {console.log('唱歌');}
}
class StarProxy {constructor() {this.star = new Star();}talk(price) {if (price > 10000) {this.star.play();} else {console.log('价格太低');}}
}
const jr = new StarProxy();
jr.talk(10001); // 唱歌

http://www.ppmy.cn/news/1514802.html

相关文章

模板之家 mymoban

模板之家mymoban.com 是一个提供各种网站模板资源的平台,涵盖了多种类型的模板,包括网页模板、PPT模板、Word模板、Excel模板等。此外,该网站还提供免费下载服务,用户可以下载到网站模板、小程序模板、JS特效、前端代码以及建站教…

kafka的一个有趣问题(BUG)

这是我的第104篇原创文章 问题由来 在使用kafka时,创建topic,对某个topic进行扩分区的操作,想必大家肯定都使用过。尤其是集群进行扩容时,对流量较大的topic进行扩分区操作。一般而言,期望的效果是:新扩的分…

数学建模学习(115):主成分分析(PCA)与Python实践

文章目录 一.主成分分析简介1.1 数学背景与维度诅咒1.2 PCA的定义与应用二.协方差矩阵——特征值和特征向量三.如何为数据集选择主成分数量四.特征提取方法五.LDA——与PCA的区别六.PCA的应用七.PCA在异常检测中的应用八.总结一.主成分分析简介 1.1 数学背景与维度诅咒 主成成…

C语言 之 字符相关函数

文章目录 字符分类函数字符转换函数 本章内容主要讲的是c语言中的字符相关的一些函数的作用用法和使用 为了方便我们对字符的各种操作,C语⾔标准库中提供了⼀系列库函数,我们大概可以根据其功能分成两类函数 字符分类函数 C语言中有一系列函数是专门用…

QT:Qt与ECharts

介绍ECharts ECharts是一款基于JavaScript的数据可视化图表库,由百度团队最初开发,并在2018年初捐赠给Apache基金会,成为ASF孵化级项目。随着项目的不断发展,ECharts在2021年1月26日正式毕业,成为Apache顶级项目 链接…

IOS半越狱工具nathanlr越狱教程

简介 nathanlr 是一款半越狱工具,不是完整越狱。 半越狱只能使用一些系统范围的插件。 无法做到完整越狱 Dopamine 越狱一样插件兼容性。 nathanlr支持 iOS 16.5.1 – 16.6.1 系统。 支持 A12 及以上设备。 肯定有人问,为什么仅仅支持这些系统&#xff…

【架构-26】BPEL

什么是BPEL BPEL(Business Process Execution Language,业务流程执行语言)是一种用于编排和整合不同的 Web 服务以构建复杂业务流程的语言。 主要作用 流程编排:可以将多个独立的业务服务组合成一个连贯的业务流程。例如&#x…

【comfyui 】comfyui mac配置教程

comfyui mac配置教程 1. 安装工程依赖与环境配置2. 安装Comfyui3. Comfyui模型下载与运行 1. 安装工程依赖与环境配置 首先,我们找到Mac电脑的终端并打开,我们复制下列代码并粘贴到终端,然后回车,即可开始安装Xcode工具。 xcode…