美文网首页
ddu-策略模式和模板方法

ddu-策略模式和模板方法

作者: 小董666 | 来源:发表于2016-07-13 16:06 被阅读0次

    策略模式的简单实现

    • 使不同的算法可以被相互替换,而不影响客户端的使用。

    通常如果一个问题有多个解决方案或者稍有区别的操作时,最简单的方式就是利用if-else or switch-case方式来解决,对于简单的解决方案这样做无疑是比较简单、方便、快捷的,但是如果解决方案中包括大量的处理逻辑需要封装,或者处理方式变动较大的时候则就显得混乱、复杂,而策略模式则很好的解决了这样的问题,它将各种方案分离开来,让操作者根据具体的需求来动态的选择不同的策略方案。 这里以简单的计算操作(+、-、、/)作为示例:
    Calc:进行计算操作的上下文环境。
    Strategy : 计算操作的抽象。
    AddStrategy、SubStrategy、MultiStrategy、DivStrategy : 具体的 +、-、
    、/ 实现。

    • 策略模式 以 = - * / 为例
      interface ICaculate{
      //计算的接口
      String startCaculate(String a,String b);
      }
      public class Strategy {
      private ICaculate strategy;
      public void setStrategy(ICaculate strategy) {
      this.strategy = strategy;
      }

           public String calcualate(String a, String b){
               return strategy.startCaculate(a,b);
           }
       }
       class Plus implements  ICaculate{
      
           @Override
           public String startCaculate(String a, String b) {
               return a+b;
           }
       }
       class test{
           public static void main(String[]ary){
           Strategy strategy=new Strategy();
           strategy.setStrategy(new Plus());
           strategy.calcualate("!","wew");
         }
       }
      
    • 模板方法:
      抽象类定义统一的规则,使子类在不改变结构是可以修改自己的实现方法。
      模板方法模式的主要思想:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。
      使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤

    AbstractClass : 抽象类,定义了一套算法框架。
    ConcreteClass1 : 具体实现类1;
    ConcreteClass2: 具体实现类2;

    不同对象的方法执行不一样,但是总体的调用方法流程一样。

    相关文章

      网友评论

          本文标题:ddu-策略模式和模板方法

          本文链接:https://www.haomeiwen.com/subject/ljxhjttx.html