看来就知道的模板方法模式---java版_源码下载

项目结构:

运行效果:

=================================================

代码部分:

=================================================

/Templete/src/com/b510/templete/TempleteOfProblem.java

 1 /**
 2  * 
 3  */
 4 package com.b510.templete;
 5 
 6 /**
 7  * 问题模板
 8  * 
 9  * @author hongten(hongtenzone@foxmail.com)
10  * @date 2013-2-20
11  */
12 public abstract class TempleteOfProblem {
13     /**
14      * 姓名
15      */
16     private String name;
17     /**
18      * 第一个问题
19      */
20     public abstract void firstProblem();
21 
22     /**
23      * 第二个问题
24      */
25     public abstract void secondProblem();
26 
27     /**
28      * 第三个问题
29      */
30     public abstract void thirdProblem();
31 
32     /**
33      * 问题模板(类似于试卷)
34      */
35     public void templeteOfProblems() {
36         firstProblem();
37         secondProblem();
38         thirdProblem();
39         
40         System.out.println("=====================");
41     }
42 
43     public String getName() {
44         return name;
45     }
46 
47     public void setName(String name) {
48         this.name = name;
49     }
50     
51 }

/Templete/src/com/b510/templete/extend/FirstPaper.java

 1 /**
 2  * 
 3  */
 4 package com.b510.templete.extend;
 5 
 6 import com.b510.templete.TempleteOfProblem;
 7 
 8 /**
 9  * 第一张试卷
10  * @author hongten(hongtenzone@foxmail.com)
11  * @date 2013-2-20
12  */
13 public class FirstPaper extends TempleteOfProblem{
14 
15     public void firstProblem() {
16         System.out.println(getName()+"第一题选择:A");
17     }
18 
19     public void secondProblem() {
20         System.out.println(getName()+"第二题选择:B");
21     }
22 
23     public void thirdProblem() {
24         System.out.println(getName()+"第三题选择:A");
25     }
26 
27 }

/Templete/src/com/b510/templete/extend/SecondPaper.java

 1 /**
 2  * 
 3  */
 4 package com.b510.templete.extend;
 5 
 6 import com.b510.templete.TempleteOfProblem;
 7 
 8 /**
 9  * @author hongten(hongtenzone@foxmail.com)
10  * @date 2013-2-20
11  */
12 public class SecondPaper extends TempleteOfProblem{
13 
14     public void firstProblem() {
15         System.out.println(getName()+"第一题选择:C");
16     }
17 
18     public void secondProblem() {
19         System.out.println(getName()+"第二题选择:D");
20     }
21 
22     public void thirdProblem() {
23         System.out.println(getName()+"第三题选择:B");
24     }
25 }

/Templete/src/com/b510/templete/extend/ThirdPaper.java

 1 /**
 2  * 
 3  */
 4 package com.b510.templete.extend;
 5 
 6 import com.b510.templete.TempleteOfProblem;
 7 
 8 /**
 9  * @author hongten(hongtenzone@foxmail.com)
10  * @date 2013-2-20
11  */
12 public class ThirdPaper extends TempleteOfProblem{
13 
14     public void firstProblem() {
15         System.out.println(getName()+"第一题选择:B");
16     }
17 
18     public void secondProblem() {
19         System.out.println(getName()+"第二题选择:C");
20     }
21 
22     public void thirdProblem() {
23         System.out.println(getName()+"第三题选择:D");
24     }
25 }

/Templete/src/com/b510/templete/test/TemplateTest.java

 1 /**
 2  * 
 3  */
 4 package com.b510.templete.test;
 5 
 6 import com.b510.templete.TempleteOfProblem;
 7 import com.b510.templete.extend.FirstPaper;
 8 import com.b510.templete.extend.SecondPaper;
 9 import com.b510.templete.extend.ThirdPaper;
10 
11 /**
12  * 模板测试类(有三个学生,做同一套试题,然而他们各自的答案是不同的)
13  * @author hongten(hongtenzone@foxmail.com)
14  * @date 2013-2-20
15  */
16 public class TemplateTest {
17 
18     public static void main(String[] args) {
19         TempleteOfProblem student = new FirstPaper();
20         student.setName("wanjin");
21         student.templeteOfProblems();
22         
23         student = new SecondPaper();
24         student.setName("hongten");
25         student.templeteOfProblems();
26         
27         student = new ThirdPaper();
28         student.setName("hanyuan");
29         student.templeteOfProblems();
30         
31     }
32 }

哈哈,是不是很简单....

源码下载http://files.cnblogs.com/hongten/Templete.zip

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zingpLiu

python迭代器、生成器、装饰器

可以直接作用于for循环的对象统称为可迭代对象,即Iterable。   # 一是集合数据类型,如list、tuple、dict、set、str等;   # 二...

9120
来自专栏python3

习题30:While循环

while循环有一个问题,那就是有时它永不结束,不过在其它的情况下你的循环总需要有一个结束点

8610
来自专栏java学习

Java每日一练(2017/6/24)

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 ●回复"每日一练"获取以前的题目! ●【新】Ajax知识点视频更新了!(...

36280
来自专栏iKcamp

Callback 与 Promise 间的桥梁 —— promisify

作者:晃晃 本文原创,转载请注明作者及出处 Promise 自问世以来,得到了大量的应用,简直是 javascript 中的神器。它很好地解决了异步方法的回...

23890
来自专栏PHP实战技术

你应该这个姿势学习PHP(1)

  应用场景:能防止sql的注入(当然并不完全是可以,我们可以使用pdo进行预处理然后方式sql的注入,安全不能只靠一种方式防止事情的发生)

536170
来自专栏老九学堂

初学C语言?先搞懂这些基础知识再谈深度学习吧!

编译程序: 如何把源程序转换成机器能够接受的目标程序,软件工作者编制了一系列的软件.通过这些软件,把用户按规定语法写出的语句一一翻译成二进制的机器指令. 这种具...

14820
来自专栏专注 Java 基础分享

全面理解java异常机制

      在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大牛,你也不可避免出错,所以java为我们提供了异常机制。本文将会从以下几个方面...

29370
来自专栏章鱼的慢慢技术路

《算法图解》第二章笔记与课后练习_选择排序算法

17430
来自专栏C语言及其他语言

实例说明

上一节,我们大致总揽了一个简单C程序的框架,程序如下: #include<stdio.h> /*引入头文件*/ int main(void) /*一个简单的C程...

29080
来自专栏CDA数据分析师

工具丨用C语言扩展Python的功能

一、简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多...

30290

扫码关注云+社区

领取腾讯云代金券