设计模式-策略模式
来源:互联网 发布:文件恢复软件recovery 编辑:程序博客网 时间:2024/06/03 06:26
1.定义:定义一系列算法,把它们一个一个封装起来,并且使它们可以相互替换。
策略模式可以用来减少if-else 语句的使用。
2.实例:个人年终奖计算,奖金金额与个人薪资和绩效等级有关。
- 原始实现方式
var calculateBonus = function(level,salary){ if(level === 'A++'){ return 4*salary; } if(level === 'A+'){ return 3*salary; } if(level === 'A'){ return 2*salary; }};calculateBonus('A++',50000);calculateBonus('A+',20000);
可以看出,代码中含有很多if-else语句,可扩展性差(一旦算法改变就必须修改内部实现),复用性差(如果其他地方需要重用奖金计算算法就得整个函数拷贝)。
- 策略模式
var strategies = { 'A++':function(salary){ return 4*salary; }, 'A+':function(salary){ return 3*salary; }, 'A':function(salary){ return 2*salary; }};var calculateBonus = function(level,salary){ return strategies[level](salary);}calculateBonus('A++',50000);calculateBonus('A+',20000);
阅读全文
1 0
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- 设计模式------策略模式
- 设计模式--策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- vue和svg(一),用svg画出带坐标系的进度条
- 如何选择合适的开源消息中间件
- Java内部类(3):非静态内部类为什么不能有静态成员变量和静态方法。
- WinForm窗体中ComboBox控件自定义高度和选项文本居中、选项高亮
- Linux链接库三(C跟C++之间动态库的相互调用)
- 设计模式-策略模式
- JAVA8-Predicate函数使用
- ehcache2.10+spring4 整合要注意的问题
- sql语句记录
- linux系统的各种内部结构
- JAVA小知识
- 最小的K个数
- WebView+ViewPager实现无限轮转,同时与手势兼容,手势触摸时可以停止轮转效果
- RSA文件加密解密和验签