zoukankan      html  css  js  c++  java
  • 第二章 --- 关于Javascript 设计模式 之 策略模式

    这一章节里面,我们会主要的针对JavaScript中的策略模式进行理解和学习

    一、定义

    策略模式: 定义一系列的算法,把他们封装起来,并且是他们可以相互替换。
    
    (这样的大的定义纲领,真的不好理解,特别是对于初学者来说)
    
    那么我们就直接来看看代码
    

    二、使用Javascript 中的一般方法来实现 根据每一位员工的年底业绩考核,来核算年终奖的需求。

    1、我们还是来用我们最为熟悉的 JS 代码来实现这个功能
    
    var calculateBonus = function(salary,perLevel){
    	if( perLevel === 'S'){
    		return salary * 4 ; 
    	}
    
    	if(perLevel === 'A'){
    		return salary * 3 ;
    	}
    
    	if(perLevel === 'B'){
    		return salary * 2;
    	}
    }
    
    var result = calculateBonus(10000,'S');
    
    console.log(result); // 40000 ;
    
    #### 思考,这样做有什么不好的地方呢?
    
    结果是显而易见的: 
    1、 当我们的评选等级。越来越多的时候,我们的calculateBonus  函数就会越来越大,而且乱
    2、我们的calculateBonus 函数 缺乏弹性,如果我们新增一种或者 10 中评选方案的话,那么我们必须深入的改变 我们的calculateBonus  函数
    3、算法的 复用性差,如果在别的地方需要 这个 奖金的算法的时候,我们只有复制这段代码了。
    

    三、使用Javascript 中的策略模式来实现 根据每一位员工的年底业绩考核,来核算年终奖的需求。

    var methods = {
    	S: function(salary){
    		return salary * 4 ;
    	} ,
    
    	A: function(salary){
    		return salary * 3 ;
    	},
    	
    	B: function(salary){
    		return salary * 2 ;
    	},
    
    	C: function(salary){
    		return salary * 1 ;
    	}  
    }
    
    var calculateBonus = function( perLevel ,salary){
    	return methods[perLevel](salary);
    }
    
    var xiao = calculateBonus('S',10000);
    console.log(xiao);  //40000
    
  • 相关阅读:
    团队开发-第一阶段冲刺-10
    团队开发-第一阶段冲刺-09
    Spring(三)
    第五周总结
    Spring(一)
    程序员修炼之道:从小工到专家阅读笔记1
    MyBatis(三)
    MyBatis(二)
    MyBatis
    第四周总结
  • 原文地址:https://www.cnblogs.com/erbingbing/p/5592627.html
Copyright © 2011-2022 走看看