DefineStrategy模式是一种常见且有效的设计模式。指的是定义一系列算法,将它们一个一个封装起来,使它们能够相互替代。策略模式的本质是将算法的使用和算法的实现分开。一个基本的策略模式由以下两部分组成:一组策略类,封装了具体的算法,负责算法的具体实现。环境类Context,接受客户端的请求,并将请求委托给某个策略类。优缺点策略模式有以下优点:利用组合、委托、多态等技术,有效避免了多个条件选择语句。完美支持开闭原则,易于理解和扩展使用策略分支功能。组合和委托的方式也赋予了Context执行算法的基本能力。复用性比较高。策略模式的缺点并不明显,主要是应用程序需要维护更多的策略对象,但本质上它的优点大于缺点。例子在Javascript中,作为一等公民的函数本身就是对象,所以我们使用对象来实现策略模式。//第1部分varstrategies={S:function(salary){returnsalary*4;},A:function(salary){returnsalary*3;},B:function(salary){returnsalary*2;},}//第2部分varcalculateBouns=function(level,salary){returnstrategies[level](salary);};console.log(calculateBouns('S',2000));console.log(calculateBouns('A',800));场景表单验证在日常的表单交互中,我们会遇到各种输入项绑定对应的表单验证规则。对每一个输入项都写出相应的规则,既费时又多余。什么时候可以用策略模型来改造。varstrategies={isNonEmpty(value,errorMsg){if(value===''||value==null){returnerrorMsg;}},minLength(value,length,errorMsg){if(value.length
