关于策略模式:策略模式
定义策略模式指的是定义一系列算法,把它们一个个封装起来。目标是将算法的应用与算法的实现拆散开来。 一个基于策略模式的程序至多由两局部组成。第一个局部是一组策略类,策略类封装了具体的算法,并负责具体的计算过程。第二个局部是环境类Context,Context承受客户的申请,随后把申请委托给某一个策略类。要做到这点,阐明Context中要维持对某个策略对象的援用。 第一版重构var performanceS = function() {};performanceS.prototype.calculate = function(salary) { return salary * 4}var performaceA = function() {};performanceA.prototype.calculate = function(salary) { return salary * 3;}var performanceB = function() {};performanceB.prototype.calculate = function(salary) { return salary * 2;}// 定义奖金类var Bonus = function() { this.salary = null; this.strategy = null;}Bonus.prototype.setSalary = function(salary) { this.salary = salary;}Bonus.prototype.setStrategy = function(strategy) { this.strategy = strategy;}Bonus.prototype.getBonus = function() { return this.strategy.calculate(this.salary);}Javascript版策略模式var strategies = { "S": function(salary) { return salary * 4; }, "A": function(salary) { return salary * 3; }, "B": function(salary) { return salary * 2 }};var calculateBonus = function(level, salary) { return strategies[level](salary);}策略模式的优缺点长处: ...