策略模式
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
举例:表单效验(是否为空、长度、手机号、邮箱等等)
计算年终奖(工资、效绩)
下面以年终将做说明:
比如公司的年终奖是根据员工的工资和绩效来考核的,绩效为A的人,年终奖为工资的4倍,
绩效为B的人,年终奖为工资的3倍,绩效为C的人,年终奖为工资的2倍;
PS:
策略模式指的是定义一系列的算法,把它们一个个封装起来,将不变的部分和变化的部分隔开,
实际就是将算法的使用和实现分离出来;算法的使用方式是不变的,都是根据某个算法取得计算后的奖金数,
而算法的实现是根据绩效对应不同的绩效规则;
一个基于策略模式的程序至少由2部分组成,第一个部分是一组策略类,策略类封装了具体的算法,
并负责具体的计算过程。第二个部分是环境类Context,该Context接收客户端的请求,
随后把请求委托给某一个策略类。
复合开放-封闭原则,可变的部分为策略类(一组算法),不变的部分为执行具体算法的方式。
表单验证
|
|
PS:此处代码来源于–腾讯.曾探的《javascript设计模式》,这能很好的说明策略模式的用途。
参考文档:
理解javascript中的策略模式