秋雨
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
  • 构造器模式
  • 原型链模式
  • 工厂模式
  • 抽象工厂模式
  • 建造者模式
  • 单例模式
  • 装饰器模式
  • 适配器模式
  • 适配器模式
  • 代理模式
  • 观察者模式
  • 发布订阅模式
  • 模块模式
  • 桥接模式
  • 组合模式
  • 命令模式
  • 命令模式
  • 迭代器模式
  • 职责链模式

简介

策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换。

ES6

const startegry = {
  S: (salary) => {
    return salary * 6;
  },
  A: (salary) => {
    return salary * 5;
  },
  B: (salary) => {
    return salary * 4;
  },
  C: (salary) => {
    return salary * 3;
  },
  D: (salary) => {
    return salary * 2;
  },
};

function calBonus(level, salary) {
  return startegry[level](salary);
}

calBonus("A", 10000);
calBonus("B", 8000);

示例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>策略模式示例</title>
    <style>
      li {
        display: flex;
        justify-content: space-between;
      }

      .reditem {
        background-color: red;
      }

      .yellowitem {
        background-color: yellow;
      }

      .greenitem {
        background-color: green;
      }
    </style>
  </head>

  <body>
    <ul id="mylist"></ul>
    <script>
      var list = [
        {
          title: "男人看了沉默",
          type: 1,
        },
        {
          title: "震惊",
          type: 2,
        },
        {
          title: "kerwin来了",
          type: 3,
        },
        {
          title: "tiechui离开了",
          type: 2,
        },
      ];

      let obj = {
        1: {
          content: "审核中",
          className: "yellowitem",
        },
        2: {
          content: "已通过",
          className: "greenitem",
        },
        3: {
          content: "未通过",
          className: "reditem",
        },
      };

      mylist.innerHTML = list
        .map(
          (item) => `
                    <li>
                        <div>${item.title}</div>    
                        <div class="${obj[item.type].className}">${
            obj[item.type].content
          }</div>    
                    </li>
                `
        )
        .join("");
    </script>
  </body>
</html>
最后更新:
贡献者: Mrlishizhen
Prev
适配器模式
Next
代理模式