2019独角兽企业重金招聘Python工程师标准>>>

解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:

就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用,看下面的例子:

public abstract class AbstractCalculator {  /*主方法,实现对本类其它方法的调用*/  public final int calculate(String exp,String opt){  int array[] = split(exp,opt);  return calculate(array[0],array[1]);  }  /*被子类重写的方法*/  abstract public int calculate(int num1,int num2);  public int[] split(String exp,String opt){  String array[] = exp.split(opt);  int arrayInt[] = new int[2];  arrayInt[0] = Integer.parseInt(array[0]);  arrayInt[1] = Integer.parseInt(array[1]);  return arrayInt;  }
}  
public class Plus extends AbstractCalculator {  @Override  public int calculate(int num1,int num2) {  return num1 + num2;  }
}  

测试类:

public class StrategyTest {  public static void main(String[] args) {  String exp = "8+8";  AbstractCalculator cal = new Plus();  int result = cal.calculate(exp, "\\+");  System.out.println(result);  }
}  

我跟踪下这个小程序的执行过程:首先将exp和"\\+"做参数,调用AbstractCalculator类里的calculate(String,String)方法,在calculate(String,String)里调用同类的split(),之后再调用calculate(int ,int)方法,从这个方法进入到子类中,执行完return num1 + num2后,将值返回到AbstractCalculator类,赋给result,打印出来。正好验证了我们开头的思路。

转载于:https://my.oschina.net/u/1431757/blog/714764

设计模式(行为型模式)——模板方法模式(Template Method)相关推荐

  1. 设计模式的征途—17.模板方法(Template Method)模式

    在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...

  2. java 模板方法_设计模式(java实现)_模板方法模式(Template method)

    设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...

  3. Java设计模式之行为型:模板方法模式

    一.什么是模板方法模式: 模板方法是基于继承实现的,在抽象父类中声明一个模板方法,并在模板方法中定义算法的执行步骤(即算法骨架).在模板方法模式中,可以将子类共性的部分放在父类中实现,而特性的部分延迟 ...

  4. 《设计模式详解》行为型模式 - 模板方法模式

    模板方法模式 6.1 模板方法模式 6.1.1 概述 6.1.2 结构 6.1.3 案例实现 6.1.3 优缺点 6.1.4 适用场景 6.1.5 JDK源码 - InputStream 完整的笔记目 ...

  5. 设计模式 — 行为型模式 — 模板方法模式

    目录 文章目录 目录 模板方法模式 应用场景 代码示例 模板方法模式 模板方法模式,定义一个算法或者流程,部分环节设计为外部可变,用类似于模板的思想来实例化一个实体,可以往模板中填充不同的内容: 在模 ...

  6. 行为型模式-模板方法模式

    1.概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关. ...

  7. C++设计模式——模板方法(Template Method)

    模板方法(template method)设计模式用于定义一个包含许多步骤的算法框架,允许子类重写(覆盖)算法的某一个步骤而不改变算法整体的流程和框架. 模板方法提供的流程是骨架,子类无须覆盖模板方法 ...

  8. 设计模式(创建型)之建造者模式(Builder Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  9. python设计模式【7】-模板方法模式

    UML类图简介 设计模式的分类 面向对象的设计原则 python设计模式[1]-单例模式 python设计模式[2]-工厂模式 python设计模式[3]-门面模式 python设计模式[4]-代理模 ...

  10. 行为型设计模式(2)—— 模板方法模式(Template Method Pattern)

    文章目录 1.概述 2.简单实现 3.使用场景和优缺点 4.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性. 模板方法模式(Template Method Patte ...

最新文章

  1. 区块链将带来怎样的应用?
  2. python整数类型-Python 的数值类型(整数、长整数、浮点数和复数)
  3. Boost:测试使用大小为0的类array <>特化
  4. CF1019D-Large Triangle【计算几何,二分】
  5. SpringBoot+SpringCloud —— 使用Feign消费服务
  6. 连接Oracle时报错ORA-12541: TNS: 无监听程序
  7. 用户管理 之 Linux 用户管理工具介绍
  8. springmvc 使用
  9. 全民战“疫”,ZStack ZCCT在线认证疫情期间免费开放!
  10. 如龙0pc端与计算机王玩游戏卡住,如龙0游戏停止工作怎么办_游戏未响应闪退解决方法_3DM单机...
  11. 小米平板4刷机win10或linux,小米平板2中Win10/MIUI系统互刷终极教程
  12. 按键精灵手机助手之实战篇(四)项目源码
  13. zookeeper节点的scheme是digest时,怎么把明文密码转换为密文 | 如何获取加密后的digetst密码
  14. python写剧情文字游戏_零基础学Python——制作简单文字游戏
  15. 从个人软件到企业软件
  16. 为什么我要选择使用Yarn来做Docker的调度引擎
  17. MagicLeap SDK 安装指南
  18. Java学习笔记-线程中countDown()使用
  19. matlab中怎么灰色关联度,五种灰色关联度分析matlab代码
  20. 区块链+保险:众安在线养鸡,人寿精准扶贫

热门文章

  1. Qt之指针与float--setNum使用
  2. jquery ajax jsonp跨域调用实例代码
  3. http://blog.csdn.net/zbyufei/article/details/6096881
  4. eclipse不格式化注释
  5. android app运行显示两个图标
  6. Java:注解(Annotation)自定义注解入门
  7. Xcode6 - 更改项目Copyright
  8. C++STL算法速查
  9. hdu 3339 In Action
  10. 苹果谷歌双双被曝,你的手机正在窃听你的生活