设计模式之行为型策略模式

将定义的一组算法封装起来,使其相互之间可以替换。封装的算法具有一定独立性,不会随客户端变化而变化。
策略模式不需要管理状态、状态间没有依赖关系、策略之间可以相互替换、在策略对象内部保存的是相互独立的一些算法。

// 价格策略对象
var PriceStrategy = function() {
  // 内部算法对象
  var strategy = {
    // 100返30
    return30: function(price) {},
    // 100返50
    return50: function(price) {},
    // 9折
    percent90: function(price) {},
    // 8折
    percent80: function(price) {},
    // 5折
    percent50: function(price) {}
  }
  // 策略算法调用接口
  return function(algorithm, price) {
    return strategy[algorithm] && strategy[algorithm](price);
  }
}();

策略模式主要特色是创建一系列策略算法,每组算法处理业务都是相同的,只是处理的过程或者处理的结果不一样,所以它们是可以相互替换的,这样就解决了算法与使用者之间的耦合。

原文地址:https://www.cnblogs.com/camille666/p/design_pattern_behavior_strategy.html