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

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

策略模式

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

该模式主要解决在有多种算法相似的情况下,使用 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.mrgr.cn/news/6966.html

相关文章:

  • DevEcoStudio创建的默认工程HelloWorld build失败请问如何解决?
  • Linux,使用FFmpeg进行MKV视频音量自适应调整
  • 前端学习Day34
  • 从力扣中等+困难题+表白HTML测试 -- 文心快码(Baidu Comate)
  • 【目标检测】CFINet:通过由粗到精的区域提议网络和模仿学习进行小目标检测
  • 如何实现一棵AVL树
  • 2408wtl,01用wtl的内置调整对话框类
  • Android开发语言Kotlin简介
  • 微服务Dubbo扩展点如何做
  • 一文彻底理解大模型 Agent 智能体原理和案例
  • 测试用例的设计
  • 无需多部备用机,云手机方便又便宜!
  • docker-harbor 仓库上传下载镜像以及仓库之间的镜像复制
  • 机器学习术语
  • 济南网站制作方案定制
  • 云计算day28
  • 2024升级zblog小程序开源源码/基于uniapp开发的(支持微信小程序、百度小程序、安卓APP)
  • EmguCV学习笔记 VB.Net 5.3 透视变换
  • ZCC5429 异步升压芯片
  • 数据库进阶 - ACID事务属性的实现机制详解