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 ) );

 

使用策略模式的例子:实现动画库以及表单验证

  • 动画库:各种缓动算法可以作为几个策略类
  • 表单验证:对每个空的要求可以作为策略类

 

策略模式与一等函数对象:在函数可以作为变量传递的语言内,其实策略模式是隐形存在的,函数变量可以作为策略类四处传递。

posted on 2016-05-16 21:41  JayusTree  阅读(97)  评论(0)    收藏  举报

导航