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

模板方法模式(template method):

一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。

模板方法模式是通过父类与子类的关系进行实现的。

示例:

模板方法模式测试类CalculatorStrategyTest.java

/*** 模板方法模式测试类** @author Kevin* @date 2016-3-15*/
public class CalculatorStrategyTest {public static void main(String[] args) {String exp = "8+8";AbstractCalculator calculator = new Plus();int result = calculator.calculate(exp, "\\+");System.out.println(exp + " = " + result);exp = "16-8";calculator = new Minus();result = calculator.calculate(exp, "\\-");System.out.println(exp + " = " + result);}}

计算抽象类AbstractCalculator.java

/*** 计算抽象类** @author Kevin* @date 2016-3-15*/
public abstract class AbstractCalculator {/*** 主方法,实现对本类其他方法的调用** @author Kevin*/public final int calculate(String exp, String opt) {int array[] = split(exp, opt);return calculate(array[0], array[1]);}/*** 计算两个数字** @author Kevin*/abstract public int calculate(int num1, int num2);/*** 处理分隔** @author Kevin*/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;}}

减法计算类Minus.java

/*** 减法计算** @author Kevin* @date 2016-3-15*/
public class Minus extends AbstractCalculator {@Overridepublic int calculate(int num1, int num2) {return num1 - num2;}
}

加法计算类Plus.java

/*** 加法计算** @author Kevin* @date 2016-3-15*/
public class Plus extends AbstractCalculator {@Overridepublic int calculate(int num1, int num2) {return num1 + num2;}
}

转载于:https://my.oschina.net/zhaokaiju/blog/655749

设计模式--模板方法模式相关推荐

  1. 在一个程序设计里,不同的功能窗口有着相似的功能实现方式,可采用设计模式---模板方法模式

        前段时间学习了一些设计模式,最近在做项目的过程中恰巧用到了其中的一个--模板方法模式.这个模式在程序设计过程中可是为小编省去了不少的代码量呢.具体是怎样应用的呢?接下来小编为您分享. 前面博文 ...

  2. 『设计模式』瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  3. 『设计模式』设计模式--模板方法模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  4. 行为型设计模式---模板方法模式

    设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...

  5. Java设计模式-模板方法模式详解

    Java设计模式-模板方法模式 文章目录 Java设计模式-模板方法模式 0.前言 1.模板方法原理 2.模板方法模式中的角色 3.模板方法模式的UML类图 4.代码实现 5.编码测试 6.模板模式中 ...

  6. Java设计模式 - 模板方法模式

    Java设计模式 - 模板方法模式 定义一个算法的骨架,并将一些步骤通过子类表达. UML图示 要点 1. 定义一个算法的骨架 - 建立一个抽象类 2. 将一些步骤通过子类表达 - 子类继承抽象类 赋 ...

  7. linkin大话设计模式--模板方法模式

    linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...

  8. JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  9. 模板设计模式_设计模式-模板方法模式

    一.模板方法模式的定义 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计 ...

  10. 大话设计模式—模板方法模式

    在模板方法模式(TemplateMethod Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计模式属于 ...

最新文章

  1. Format specifies type 'id' but the argument has type 'NSError *__autoreleasing *
  2. 微软代号为“Volta”的编程工具集预览
  3. html 弹出遮罩 iframe,iframe正在加载时显示遮罩层 加载完毕后显示iframe
  4. 【TYVJ】1359 - 收入计划(二分)
  5. 开源浪潮下程序员的职业规划和成长
  6. Ios KVC KVO
  7. elasticsearch存储空间不足导致索引只读,不能创建
  8. kailinux mysql提权_linux下mysql提权
  9. 【C语言】数据类型转换的问题
  10. 贪吃蛇的c语言代码怎么弄,刚学C语言,想写一个贪吃蛇的代码
  11. MANIFEST.MF
  12. python是什么-什么是Python?最全的python百科
  13. openGauss企业级开源数据库获第十届中国电子信息博览会金奖
  14. 怎样安装matlab2016,Matlab2016b安装教程(Matlab 2016b详细安装步骤)
  15. Quartus-II实现D触发器的三种方式
  16. ps4插html屏幕不亮光,ps4连接显示器怎么老是黑屏
  17. php编程模块英文缩写_工作中常用的英文单词缩写
  18. Bilibili 视频下载 Python 实现
  19. VS2022的下载和使用
  20. Python:批量把这些好看的图片保存到本地,爱了吗?

热门文章

  1. WP8调用NativeCode
  2. Crystal Reports图表(上)
  3. 如何配置sharepoint moss集成RMS
  4. pyspark导出文件
  5. 用命令行查看局域网的其他在线的ip
  6. oracle备份保留3天,【错误更正】oracle 备份: 每天备份,全备份,保留七天。...
  7. 最新JAVA性能调优实战教程_java性能调优实战 - osc_9z8xc00s的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. exa:一个 ls 命令的现代替代品
  9. 怎么远程虚拟机中的mysql_如何从本地远程访问虚拟机内的Mysql服务器?
  10. %3c- r语言运算符,R语言基础教程之运算符