zoukankan      html  css  js  c++  java
  • 策略模式

     

    主要解决:

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

      

  • 相关阅读:
    Pandas 基础(8)
    Pandas 基础(7)
    Pandas 基础(6)
    Pandas 基础(5)
    Pandas 基础(4)
    python matplotlib 图表局部放大
    python 带小数点时间格式化
    emacs elpy代码补全功能
    spacemacs 初始安装报错
    视频加载logo 2
  • 原文地址:https://www.cnblogs.com/bigman-bugman/p/12247831.html
Copyright © 2011-2022 走看看