设计模式:策略模式

Posted 「已注销」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式:策略模式相关的知识,希望对你有一定的参考价值。

设计模式:策略模式

特点

  • 一个问题匹配多个解决方案
  • 可以添加解决方案
  • 可以删除解决方案

案例:购物车结算

  • 解决方案
const sale = 
        '100_10': price => price -= 10,
        '200_30': price => price -= 30,
        '500_60': price => price -= 60
      
  • 添加解决方案
calcPrice.add = function (type, fn) 
        if (sale[type]) return '此优惠已存在'
        sale[type] = fn
      
  • 删除解决方案
calcPrice.del = function (type) 
        delete sale[type]
      

完整代码

const calcPrice = (function () 
      // 优惠类型
      const sale = 
        '100_10': price => price -= 10,
        '200_30': price => price -= 30,
        '500_60': price => price -= 60
      

      function calcPrice (price, type) 
        if (sale[type] === undefined) return '此优惠不存在'
        return sale[type](price)
      

      // 添加优惠类型
      calcPrice.add = function (type, fn) 
        if (sale[type]) return '此优惠已存在'
        sale[type] = fn
      

      // 删除优惠类型
      calcPrice.del = function (type) 
        delete sale[type]
      

      return calcPrice
    )()

以上是关于设计模式:策略模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式中的多态——策略模式详解

设计模式——策略模式

java设计模式---策略模式(案例解析)

策略模式(Strategy Pattern)

设计模式策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式笔记-策略模式