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

策略模式

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

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

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

js 复制代码
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 就是代理模式的一个非常好的体现。

js 复制代码
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); // 唱歌
相关推荐
一个在高校打杂的2 天前
honeypot之opencanary(轻量化蜜罐)
linux·网络安全·网络攻击模型·安全威胁分析·策略模式
看山是山_Lau2 天前
建造者模式:复杂对象如何一步步构建
设计模式·建造者模式
霸道流氓气质2 天前
业务链路追踪日志设计模式 — 从原理到实践
设计模式
nnsix3 天前
设计模式 - 建造者模式 笔记
笔记·设计模式·建造者模式
cui17875683 天前
矩阵拼团 + 复购拼团:新零售最稳的复购模式,规则简单
大数据·人工智能·设计模式·零售
百珏3 天前
[灰度发布]:全链路透传组件:APM、自研方案与 Java Agent 的实现取舍
后端·设计模式·架构
likerhood3 天前
设计模式 · 享元模式(Flyweight Pattern)java
java·设计模式·享元模式
AI大法师3 天前
从 Adobe 焕新看品牌系统升级:Logo、主色、字体与产品体验如何重新对齐
大数据·人工智能·adobe·设计模式
贵慜_Derek3 天前
《从零实现 Agent 系统》连载 03|控制循环:感知—决策—行动—反思
人工智能·设计模式·架构
nnsix3 天前
设计模式 - 原型模式 笔记
笔记·设计模式·原型模式