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
    
  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/erbingbing/p/5592627.html
Copyright © 2011-2022 走看看