将定义的一组算法封装起来,使其相互之间可以替换。封装的算法具有一定独立性,不会随客户端变化而变化。
策略模式不需要管理状态、状态间没有依赖关系、策略之间可以相互替换、在策略对象内部保存的是相互独立的一些算法。
// 价格策略对象 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); } }();
策略模式主要特色是创建一系列策略算法,每组算法处理业务都是相同的,只是处理的过程或者处理的结果不一样,所以它们是可以相互替换的,这样就解决了算法与使用者之间的耦合。