javascriptjavasrcipt设计模式之策略模式

Posted teemor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascriptjavasrcipt设计模式之策略模式相关的知识,希望对你有一定的参考价值。

策略模式支持在运行时由使用者选择合适的算法,对于使用者而言不用关心背后的具体事项,而使用者自动根据当前程序执行的上下文和配置,从已有的算法列表中选择出合适的算法来处理当前任务。

1.要解决的问题

2.如何实现

3.在开源框架和类库中的使用

4.总结

要解决的问题

策略模式同样解决的是解耦的问题,目的是使调用的客户端与需要调用的算法解耦开来,保证算法的内部实现的更改不会影响到客户端的调用。当然这些算法往往需要封装为较为通用的。这样一来可以自由的从算法几种选取需要调用的合适的算法,就像搭积木一样,而算法也可以独立出来单测。

如何实现(应用场景之一表单验证

对于一个表单,各个字段的输入值格式并不唯一,有的是数字,有的是电话号码。因而他们可能有各自都有的验证的要求。

策略模式是可复用的,比如多个字段可能都要求验证非空,这时,我们可以把场景的验证策略抽象为一个策略集合

使用者需要对表单数据进行校验时,只需要传入数据以及制定各个字段的验证策略,就可以给出相应的验证结果了,从而将表达你的处理和验证逻辑分离开来。

//  将校验的数据
var data = {
name : hh,
gender: 1
}
//  校验规则配置
validator.config = {
name:{
text: ‘姓名‘,
validators: [‘isNotEmpty‘,‘isValidName‘]
},
identity:{
text:‘身份证号‘,
validators:[‘isnotEmpty‘,‘isValidIdentity‘]
}
}
//  调用获得校验结果
validator.validate(data);

 


以上是关于javascriptjavasrcipt设计模式之策略模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式

单例模式之懒汉模式,懒汉模式之高效模式,DLC双判断模式

设计模式之代理模式

Python工程之设计模式总结Python之23种设计模式

《设计模式之禅》之代理模式

《设计模式之禅》之策略模式