设计模式——14模板方法模式(Template Method)-阿里云开发者社区

开发者社区> inzaghi1984> 正文

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

简介: 模板方法模式(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,打印出来。正好验证了我们开头的思路。

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

相关文章
用阿里云建网站三种方式(自助建站+模板建站+功能定制建站)
站长分享利用阿里云创建网站的三种方式及优势对比
94 0
23、Python与设计模式--设计原则
#一、六大设计原则 在法理学中,法律规则与法律原则都是法律规范的重要构成。但二者也会有些不同:法律规则是指采取一定的结构形式具体规定人们的法律权利、法律义务以及相应的法律后果的行为规范,内容比较明确,比如,交通法规中规定,禁止闯红灯;法律原则是指在一定法律体系中作为法律规则的指导思想,基本或本原的、综合的、稳定的原理和准则,内容上只包含“大方针”,而并未有具体规则,比如,如果车上有马上临产的孕妇
3125 0
用阿里云建网站三种方式(自助建站+模板建站+功能定制建站)
站长分享利用阿里云创建网站的三种方式及优势对比
80 0
模板(templates)
通常情况下,我们不会像hello world一样直接在视图函数中编写返回内容,而是专门返回一个渲染过的模板。Flask使用Jinja2完成这一任务。 1.
513 0
用阿里云建网站三种方式(自助建站+模板建站+功能定制建站)
站长分享利用阿里云创建网站的三种方式及优势对比
111 0
+关注
inzaghi1984
金融IT技术人员
223
文章
62
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载