设计模式之策略模式

来源:互联网 发布:全民无双 源码 编辑:程序博客网 时间:2024/06/07 11:48
//定义一系列的算法,把它们一个个封装起来,并且使他们可以相互替换,使得算法的变化独立于使用它的客户。var performanceA = function(){};performanceA.prototype.calculate = function(salary) {    return salary * 4;};var performanceB = function(){};performanceB.prototype.calculate = function(salary) {    return salary * 3;};var performanceC = function(){};performanceC.prototype.calculate = function(salary) {    return salary * 2;};// 奖金类var Bonus = function(){    this.salary = null;    // 原始工资    this.levelObj = null;  // 绩效等级对应的策略对象};Bonus.prototype.setSalary = function(salary) {    this.salary = salary;  // 保存员工的原始工资};Bonus.prototype.setlevelObj = function(levelObj){    this.levelObj = levelObj;  // 设置员工绩效等级对应的策略对象};// 取得奖金数Bonus.prototype.getbonus = function(){    // 把计算奖金的操作委托给对应的策略对象    return this.levelObj.calculate(this.salary);};var bonus = new Bonus();bonus.setSalary(10000);bonus.setlevelObj(new performanceA()); // 设置策略对象console.log(bonus.getbonus());  // 40000bonus.setlevelObj(new performanceB()); // 设置策略对象console.log(bonus.getbonus());  // 30000
0 0
原创粉丝点击