ddu-策略模式和模板方法

策略模式的简单实现

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

通常如果一个问题有多个解决方案或者稍有区别的操作时,最简单的方式就是利用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;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 5,229评论 9 62
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,820评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,955评论 0 11
  • 今天难得有点时间。这是一本读前十页我就知道我会为它写一篇的书,一直迫不及待想写点什么。 这本书是一些信和情书,读那...
    孤笔题岁月阅读 491评论 10 3

友情链接更多精彩内容