设计模式总结篇系列:模板方法模式(Template Method)-阿里云开发者社区

开发者社区> 长征6号> 正文

设计模式总结篇系列:模板方法模式(Template Method)

简介:
+关注继续查看

模板方法模式需要开发抽象类和具体子类之间的协作。抽象类负责给出一个算法的轮廓和骨架,子类则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method)。子类重写抽象类中的抽象方法,通过调用抽象类中的模板方法中的抽象方法,实现对子类基本方法的调用。

直接来看一个例子:

1.定义一个抽象类,及类中的模板方法和抽象方法:

复制代码
 1 abstract class AbstractCalculator {
 2 
 3     // 主方法,实现对本类其它方法的调用
 4     public final int getResult(String exp, String opt) {
 5         int array[] = split(exp, opt);
 6         return calculate(array[0], array[1]);
 7     }
 8 
 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 
17     // 被子类重写的方法
18     abstract public int calculate(int num1, int num2);
19 }
复制代码

2.定义子类:

复制代码
1 class Plus extends AbstractCalculator {  
2       
3     @Override  
4     public int calculate(int num1,int num2) {  
5         return num1 + num2;  
6     }  
7 }  
复制代码

3.测试:

复制代码
1 public class TemplateMethodTest {
2 
3     public static void main(String[] args) {
4         String exp = "5+8";
5         AbstractCalculator cal = new Plus();
6         int result = cal.getResult(exp, "\\+");
7         System.out.println(result);
8     }
9 }
复制代码

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
分类: 设计模式

本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/3778960.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
大话设计模式之模板方法模式
          模板?生科的小朋友或许会这样理解,DNA复制或转录时,用来产生互补链的核苷酸序列。在我们的日程生活中,我们也时常与模板打交道,比如有些师哥师姐毕业了,需要写简历应聘,这个时候就有了简历模板;临近毕业大四的孩子,需要准备论文,就有了论文模板,所以,模板的概念就是有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新完善它,例如简历模板,从网上down下来的简历模板的格式都是相同的,要想拿到一份满意的offer,我们首先要根据自己的情况填充不同的内容完成属于自己的简历,拿到那梦寐以求的Offer。
923 0
Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
1:成员变量和局部变量的区别(理解)(1)在类中的位置不同成员变量:类中方法外局部变量:方法定义中或者方法声明上(2)在内存中的位置不同 成员变量:在堆中局部变量:在栈中(3)生命周期不同(成员的创建与销毁时间)成员变量:随着对象的创建而存在,随着对象的消失而消失局部变量:随着方法的调用而存在,随着方法的调用完毕而消失(4)初始化值不同成员变量:有默认值局部变量:没有默认值,必须定义,赋值
1361 0
jetbrick template 高性能、高扩展性的Java模板引擎
jetbrick-template 刚刚发布了 1.0.2 版。 jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性。 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用。
25 0
模板方法模式
定义 定一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板模式中有两个角色,抽象模板角色定义了一个或多个抽象操作以便让子类实现,定义并实现了一个模板方法,这个方法包含了一些不可改变的方法执行顺序。
1555 0
用阿里云建网站三种方式(自助建站+模板建站+功能定制建站)
站长分享利用阿里云创建网站的三种方式及优势对比
185 0
+关注
1224
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载