设计模式——14模板方法模式(Template Method)

14、模板方法模式(Template Method)
解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。

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

  1. public abstract class AbstractCalculator {
  2. /主方法,实现对本类其它方法的调用/
  3. public final int calculate(String exp,String opt){
  4. int array[] = split(exp,opt);
  5. return calculate(array[0],array[1]);
  6. }
  7. /被子类重写的方法/
  8. abstract public int calculate(int num1,int num2);
  9. public int[] split(String exp,String opt){
  10. String array[] = exp.split(opt);
  11. int arrayInt[] = new int[2];
  12. arrayInt[0] = Integer.parseInt(array[0]);
  13. arrayInt[1] = Integer.parseInt(array[1]);
  14. return arrayInt;
  15. }
  16. }
    [java] view plaincopy
  17. public class Plus extends AbstractCalculator {
  18. @Override
  19. public int calculate(int num1,int num2) {
  20. return num1 + num2;
  21. }
  22. }
    测试类:

[java] view plaincopy

  1. public class StrategyTest {
  2. public static void main(String[] args) {
  3. String exp = "8+8";
  4. AbstractCalculator cal = new Plus();
  5. int result = cal.calculate(exp, "\+");
  6. System.out.println(result);
  7. }
  8. }
    我跟踪下这个小程序的执行过程:首先将exp和"\+"做参数,调用AbstractCalculator类里的calculate(String,String)方法,在calculate(String,String)里调用同类的split(),之后再调用calculate(int ,int)方法,从这个方法进入到子类中,执行完return num1 + num2后,将值返回到AbstractCalculator类,赋给result,打印出来。正好验证了我们开头的思路。
时间: 2024-09-18 14:21:04

设计模式——14模板方法模式(Template Method)的相关文章

乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)

原文:乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern) 作者:webabcd 介绍 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 示例 有一个Message实体类,对它的操作有Get()方法,每次Get()之前要使用ValidateUs

C#设计模式(14)——模板方法模式(Template Method)

原文:C#设计模式(14)--模板方法模式(Template Method) 一.引言 提到模板,大家肯定不免想到生活中的"简历模板"."论文模板"."Word中模版文件"等,在现实生活中,模板的概念就是--有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后我们可以根据自己的情况填充不同的内容要完成属于自己的简历.在设计模式中,模板方法模式中模板和生活中模

设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1:银行业务办理流程 在银行办理业务时,一般都包含几个基本固定步骤: 取号排队->办理具体业务->对银行工作人员进行评分. 取号取号排队和对银行工作人员进行评分业务逻辑是一样的.但是办理具体业务是个不相同的,具体业务可能

解读设计模式----模板方法模式(Template Method)

一. 模式概述 摸板方法(Template Method)模式是一种非常简单而又经常使用的设计模式.先创建一个父类,把其中的一个或多个方法留给子类去实现,这实际上就是在使用摸板模式.所谓的摸板模式可以这样来理解:"在一个类中定义一个算法,但将此算法的某些细节留到子类中去实现.换句话说,基类是一个抽象类,那么你就是在使用一种简单形式的摸板模式." 更近一步可以这样来理解:"准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可

.Net设计模式实例之模板方法模式(Template Mothed Pattern)

一.模板方法模式简介(Brief Introduction) 模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些步骤 延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可以重定义算法的某些特定 步骤.模板方法模式把不变行为搬移到超类,从而去除子类中的重复代码,实际上模板方法 模式就是提供了一个代码复用平台. 二.解决的问题(What To Solve) 要完成在某一细节上层次一致的一个过程或一系列步骤,但个别步骤在更详细的层次上 实现不同时,

.NET设计模式-模版方法(Template Method)

摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要.   主要内容 1.概述 2.Template Method解说 3..NET中的Template Method模式 4.适用性及实现要点   概述 变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对.如何更好的去抓住变化点,应对变化?如何更好的提高代码复用?通过学习Template Method模式,您应该有一个新的认识. 意图 定义一个操作中的算法的骨架,

C++设计模式之模板方法模式_C 语言

前言 离开了自己工作了将近两年的公司,日子不再有了忙碌,可以闲下来,躺在家里的床上,想着以后的路怎么走,说实话,真的很迷茫,从2012年毕业到现在,时间不长,但是学到的东西真的是非常有限,一直从事于Windows平台上的开发.说到Windows平台的开发,大家都肯定知道的HOOK的,即使不知道HOOK,对于COM应该也是知道的,我的系列博文中也对COM进行过全面的总结.说白了,HOOK就是在执行某个功能时,会有一个一系列的执行过程,对于这个过程一般都是固定的,比如:第一步执行什么,第二步干什么,

【java设计模式】之 模板方法(Template Method)模式

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51323902 目录(?)[+] 1. 模板方法的一个实例         这一节主要来学习一下设计模式中的模板方法模式.我们先来看一个例子:假如现在老板让你做一个汽车的模型,要求只要完成基本功能即可,不考虑扩展性,那你会怎么做呢?我们首先会根据经验设计一个类图:        由这个类图可知,非常简单的实现了悍马车,该车有两个型号H1和H2.那现在我们开始实

设计模式:模板方法模式(Template Method)

 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.一次性的实现一个算法的不变部分,并将可变的行为留给子类来实现.  模板方法的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑.  模板方法模式中的方法可以分为两大类:模板方法和基本方法. 1 模板方法  一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法.  一个抽