JavaScript设计模式7策略模式
策略模式的定义:定义一系列,并把它们一个个封装起来,并使它们可以互相替换。
从定义可以看出,策略模式至少需要两部分。一部分是策略类,封装具体算法,负责具体的计算过程。一部分是环境类context,context接受客户请求,并将请求委托给某个策略类。
传统面向对象实现方式:
var performanceS = function(){}
performanceS.prototype.calculate = function(salary){
return salary * 4;
}
var bonus = function(){
this.strategy = null;
this.salary = 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);
}
var bonus = new Bonus()
bonus.setSalary(1000)
bonus.setStrategy(new performanceS())
javascript的策略模式实现:
var strategies = {
's' : function(salary){
return salary *400;
}
}
var calculateBonus= function(strategy){
return strategies[strategy](salary)
}
calculateBonus('s', 1000)
//在函数作为一等对象的语言中,策略模式是隐形的
var s = function(salary){
return salary * 400;
}
var getBonus = function(fn,salary){
return fn(salary);
}
getBonus(s, 100);
Think Different, Make Different-编程是一个习惯

浙公网安备 33010602011771号