当前位置: 首页 > Web前端 > HTML

javascript设计模式-策略模式

时间:2023-04-02 16:34:26 HTML

javascript策略模式总结1.什么是策略模式?策略模式的定义是:定义一系列算法,将它们独立封装,可以相互替换。比如我们需要写一段代码来计算员工的奖金。业绩为a时,奖金为工资的5倍;绩效为b时,奖金为工资的3倍;绩效为c时,奖金为工资的1.5倍:varstrategy={"a":function(salary){returnsalary*5;},"b":function(salary){返回工资*3;},"c":function(salary){返回工资*1.5;}};varcalculate=function(levle,salary){returnstrategy[levle](salary);}//a-levelbonuscalculate('a',15000);在上面的例子中,各种性能对应着不同的算法,所以封装在strategy中。calculate负责接受请求,然后将请求委托给指定的策略类。这个实现就是策略模式。2.策略模式的优点回顾上面的例子,具体的算法和接受请求的函数是相互独立的。当我们需要添加新的级别d时,只需要在策略中添加相应的算法即可,无需修改计算,非常灵活。3.策略模式的使用如果策略模式只是用来封装算法的话,用起来可能有点小。在实际开发中,可以用来封装一系列业务规则,灵活调用。例如,在表单验证中,经常使用策略模式。varstrategy={isNotEmpty:function(val,errorMsg){//非空if(val===""){returnerrorMsg;}}isMobile:function(val,errorMsg){//手机号if(!/^1[3|5|8][0-9]{9}$/.test(val)){returnerrorMsg;}}}//实现验证器,负责接收请求。varValidator=function(){this.cache=[];};Validator.protype.add=function(dom,rule,errorMsg){this.cache.push(function(){returnstrategy[rule](dom.value,errorMsg);})};Validator.protype.start=function(){varlen=this.cache.length;for(vari=0;i使用策略模式后,我们可以使用配置策略添加校验规则,可以很好的复用,避免了很多条件选择语句和代码复制粘贴。