码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2020-02-01 12:52:43      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:扩展性   优点   多个   替换   复杂   UNC   增强   优雅   缺点   

技术图片

 

 技术图片

技术图片

 

 

 

技术图片

 

 

主要解决:

  • 在有多种算法相似的情况下,使用 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)
}

  

 

策略模式

标签:扩展性   优点   多个   替换   复杂   UNC   增强   优雅   缺点   

原文地址:https://www.cnblogs.com/bigman-bugman/p/12247831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!