<返回更多

JavaScript设计模式之策略模式(Strategy Pattern)

2019-08-16    
加入收藏
JavaScript设计模式之策略模式(Strategy Pattern)

 

策略模式的定义

定义一系列的算法,把它们一个个封装起来,并且是它们可以相互替换。

策略模式的优势

此文仅记录本人阅读《JAVAScript设计模式与开发实践》这个本时的感受,感谢作者曾探写出这么好的一本书。如有冒犯,如有错误,请联系本人处理。

简单的业务场景

计算员工年终奖需要根据不同的员工绩效计算不同的奖金。例如,绩效为S的人年终奖有4倍工资。绩效A的人年终奖有3倍工资,绩效B的人有2倍工资。

用代码实现:

JavaScript设计模式之策略模式(Strategy Pattern)

 

其实上面一段代码已经能应付目前的场景。但是,当奖金的评定需要增加一个绩效C,或者改变绩效A的计算方式。此时需要更改上面这个calculateBonus方法的内部结构,如此下去,这个方法内部将变得冗杂。

设计模式中很重要的一点就是将不变和变分离出来。这里变的是怎么算。不变的是根据一个绩效获得一个结果。所以上述代码重写,把各种算法封装在一个个策略类中(传统面向对象的模仿):

JavaScript设计模式之策略模式(Strategy Pattern)

 

JavaScript版本的策略模式

在JavaScript中可以将一个个策略类写成函数,然后封装在对象中

JavaScript设计模式之策略模式(Strategy Pattern)

 

更广义的“算法”

策略模式指的是一系列的算法(策略),并且把它们封装起来。计算奖金的列子中就封装了一些算法。其实世纪业务中也可以利用策略模式来封装一些“业务规则”。

表单验证

在Web项目中往往有很多场景需要提交表单。前端在把数据提交到后端之前,需要进行一波表单验证,来减少不必要的网络请求。在表单验证中往往会有多种校验规则,页面中可能会有多个表单要进行验证。此时可以用策略模式来实现一个表单验证:

JavaScript设计模式之策略模式(Strategy Pattern)

 

上面是定义几种验证的策略(方法)

JavaScript设计模式之策略模式(Strategy Pattern)

 

接下来是使用策略模式的方式

JavaScript设计模式之策略模式(Strategy Pattern)

 

总结

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>