JavaScript设计模式与开发实践-第5章-策略模式
策略模式的定义:定义一系列算法,并封装起来,同时将算法的“实现”和“使用”分开
基于策略模式的程序:
- 至少包含两个部分策略类和环境类(Context)
- 策略类包含算法具体的实现
- 环境类用于接受客户的请求,然后把请求委托给一个策略类
基于传统面向对象的实现比较冗余,基于JS的实现如下:
1 // 策略类 2 var strategies = { 3 "S" : function( salary ){ 4 return salary*4; 5 }, 6 "A" : function( salary ){ 7 return salary*3; 8 }, 9 "B" : function( salary ){ 10 return salary*2; 11 } 12 }; 13 14 // 环境类 15 var calculateBonus = function( level, salary ){ 16 return strategies[ level ]( salary ); 17 }; 18 19 console.log( calculateBonus( 'A', 2000 ) );
使用策略模式的例子:实现动画库以及表单验证
- 动画库:各种缓动算法可以作为几个策略类
- 表单验证:对每个空的要求可以作为策略类
策略模式与一等函数对象:在函数可以作为变量传递的语言内,其实策略模式是隐形存在的,函数变量可以作为策略类四处传递。
浙公网安备 33010602011771号