• 策略模式


    定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
    策略模式的三个角色
    封装角色: 屏蔽高层模块对策略,算法的直接访问,封装可能存在的变化
    抽象策略角色: 策略,算法家族的抽象,通常为借口。定义每个策略或算法必须具有的方法和属性
    具体策略角色 实现抽象策略中的操作,该类含有具体的算法
    优点:
    1.算法可以自由切换
    2.避免使用多重条件判断
    3.扩展性良好
    缺点:
    1.策略类数量增多,每一个策略都是一个类,复用的可能性很小,类数量增多
    2.所有的策略类都需要对外暴露 上层模块必须知道都有哪些策略,然后才能决定使用哪一个策略
     
    使用场景:
    1.多个类只有在算法或行为上稍有不同的场景
    2.算法需要自由切换的场景
    3.需要屏蔽算法规则的场景
     
    总结:定义是数据集合和规则序列,将相同的工作代码封装成不同的类,然后通过统一的策略处理类来处理。
     
    策略模式实例:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>策略模式</title>
    </head>
    <body>
    <script>
      var data=[[25,26],[25,5]];
      var type=['add','jian']
      var validator={
          config:{}
      };
      validator.config.add = {
          suan: function (a,b) {
              return a+b;
          }
      };
      validator.config.jian = {
          suan: function (a,b) {
              return a-b;
          }
      };
      var ObjMethod=validator.config;
        function suanfa(ceshi) {
            for(var i in type){
                switch (ceshi){
                    case type[i] :
                        var leixing=type[i];
                        var val=ObjMethod[leixing].suan(data[i][0],data[i][1]);
                        console.log(val);
                        break;
                }
            }
        }
      suanfa('add');
      suanfa('jian');
    </script>
    </body>
    </html>
  • 相关阅读:
    五月一日工作感悟
    Loadrunner 性能指标
    tcp ,http .udp
    Loadrunner 面试常见问题
    抓包不求人
    性能测试自动化测试平台
    jmeter 控制器
    转:java中String使用equals和==比较的区别
    转:Java对象及对象引用变量
    排序算法小结
  • 原文地址:https://www.cnblogs.com/zjy1017/p/7000541.html
Copyright © 2020-2023  润新知