设计模式(行为型模式)——模板方法模式(Template Method)
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)相关推荐
- 设计模式的征途—17.模板方法(Template Method)模式
在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...
- java 模板方法_设计模式(java实现)_模板方法模式(Template method)
设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...
- Java设计模式之行为型:模板方法模式
一.什么是模板方法模式: 模板方法是基于继承实现的,在抽象父类中声明一个模板方法,并在模板方法中定义算法的执行步骤(即算法骨架).在模板方法模式中,可以将子类共性的部分放在父类中实现,而特性的部分延迟 ...
- 《设计模式详解》行为型模式 - 模板方法模式
模板方法模式 6.1 模板方法模式 6.1.1 概述 6.1.2 结构 6.1.3 案例实现 6.1.3 优缺点 6.1.4 适用场景 6.1.5 JDK源码 - InputStream 完整的笔记目 ...
- 设计模式 — 行为型模式 — 模板方法模式
目录 文章目录 目录 模板方法模式 应用场景 代码示例 模板方法模式 模板方法模式,定义一个算法或者流程,部分环节设计为外部可变,用类似于模板的思想来实例化一个实体,可以往模板中填充不同的内容: 在模 ...
- 行为型模式-模板方法模式
1.概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关. ...
- C++设计模式——模板方法(Template Method)
模板方法(template method)设计模式用于定义一个包含许多步骤的算法框架,允许子类重写(覆盖)算法的某一个步骤而不改变算法整体的流程和框架. 模板方法提供的流程是骨架,子类无须覆盖模板方法 ...
- 设计模式(创建型)之建造者模式(Builder Pattern)
PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...
- python设计模式【7】-模板方法模式
UML类图简介 设计模式的分类 面向对象的设计原则 python设计模式[1]-单例模式 python设计模式[2]-工厂模式 python设计模式[3]-门面模式 python设计模式[4]-代理模 ...
- 行为型设计模式(2)—— 模板方法模式(Template Method Pattern)
文章目录 1.概述 2.简单实现 3.使用场景和优缺点 4.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性. 模板方法模式(Template Method Patte ...
最新文章
- 区块链将带来怎样的应用?
- python整数类型-Python 的数值类型(整数、长整数、浮点数和复数)
- Boost:测试使用大小为0的类array <>特化
- CF1019D-Large Triangle【计算几何,二分】
- SpringBoot+SpringCloud —— 使用Feign消费服务
- 连接Oracle时报错ORA-12541: TNS: 无监听程序
- 用户管理 之 Linux 用户管理工具介绍
- springmvc 使用
- 全民战“疫”,ZStack ZCCT在线认证疫情期间免费开放!
- 如龙0pc端与计算机王玩游戏卡住,如龙0游戏停止工作怎么办_游戏未响应闪退解决方法_3DM单机...
- 小米平板4刷机win10或linux,小米平板2中Win10/MIUI系统互刷终极教程
- 按键精灵手机助手之实战篇(四)项目源码
- zookeeper节点的scheme是digest时,怎么把明文密码转换为密文 | 如何获取加密后的digetst密码
- python写剧情文字游戏_零基础学Python——制作简单文字游戏
- 从个人软件到企业软件
- 为什么我要选择使用Yarn来做Docker的调度引擎
- MagicLeap SDK 安装指南
- Java学习笔记-线程中countDown()使用
- matlab中怎么灰色关联度,五种灰色关联度分析matlab代码
- 区块链+保险:众安在线养鸡,人寿精准扶贫