策略模式
Posted bigman-bugman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略模式相关的知识,希望对你有一定的参考价值。
主要解决:
- 在有多种算法相似的情况下,使用 if...else 或 switch...case 所带来的复杂性和臃肿性
优点
- 算法多样性,且具备自由切换功能;
- 有效避免多重条件判断,增强了封装性,简化了操作,降低出错概率;
- 扩展性良好,策略类遵顼 里氏替换原则,可以很方便地进行策略扩展;
缺点
- 策略类数量增多,且所有策略类都必须对外暴露,以便客户端能进行选择;
核心
- 对一个操作,需要执行多个需要判断的类似步骤,可以提供统一的封装,外部直接可选择性使用这些封装,不关心内部逻辑
- 去掉判断语句,直接配置式使用
实际案例
- 实现更优雅的表单验证
- 游戏里的角色计分器
- 棋牌类游戏的输赢算法
const obj = { A: (num) => num * 4, B: (num) => num * 6, C: (num) => num * 8 } const getSum =function(type, num) { return obj[type](num) }
以上是关于策略模式的主要内容,如果未能解决你的问题,请参考以下文章