- 浏览: 753514 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
今天看书,看到了模版模式,就顺便复习一下,模版模式是父类建立骨架,而子类具体实现其方法。它是把不变的行为搬移到了父类,去除了子类重复的代码,它提供了一个很好的代码复用的平台。当不变的行为和可变的行为在子类中混合在一起的时候,不变的行为就会在代码中重复。通过模版方法行为把重复的行为转移到单一的地方,这样就帮助子类摆脱重复代码的纠缠。
例如:一个复杂的例子用模版模式是如何实现的。考生做试题,传统的方法是这样的,两个人做答其代码是这个样子的
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class TestPaperA { public void questionA(){ System.out.println("题目A"); System.out.println("你喜欢我吗? A:喜欢 B: 不喜欢"); System.out.println("答案:B"); } public void questionB(){ System.out.println("题目B"); System.out.println("你喜欢游泳吗? A:喜欢 B: 不喜欢"); System.out.println("答案:B"); } }
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class TestPaperB { public void questionA(){ System.out.println("题目A"); System.out.println("你喜欢我吗? A:喜欢 B: 不喜欢"); System.out.println("答案:A"); } public void questionB(){ System.out.println("题目B"); System.out.println("你喜欢游泳吗? A:喜欢 B: 不喜欢"); System.out.println("答案:A"); } }
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class Test { /** * @param args */ public static void main(String[] args) { TestPaperA PaperA = new TestPaperA(); PaperA.questionA(); PaperA.questionB(); TestPaperB PaperB = new TestPaperB(); PaperB.questionA(); PaperB.questionB(); } }
结果如下:
题目A
你喜欢我吗? A:喜欢 B: 不喜欢
答案:B
题目B
你喜欢游泳吗? A:喜欢 B: 不喜欢
答案:B
题目A
你喜欢我吗? A:喜欢 B: 不喜欢
答案:A
题目B
你喜欢游泳吗? A:喜欢 B: 不喜欢
答案:A
大家可以看出,两份卷子都包含重复的题目,如果我们把重复的公共的东西提取出来,放到一个父类中,重复代码会减少。如下所示。
/** * * @功能 抽象模版类 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public abstract class AbstractTestPaper { /** * 公共方法1模版1 */ public void questionA() { System.out.println("题目A"); System.out.println("你喜欢我吗? A:喜欢 B: 不喜欢"); answerA(); } /** * 公共方法2模版2 */ public void questionB() { System.out.println("题目B"); System.out.println("你喜欢游泳吗? A:喜欢 B: 不喜欢"); answerB(); } /** * 抽象方法1 */ public abstract void answerA(); /** * 抽象方法2 */ public abstract void answerB(); }
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class TestPaperA extends AbstractTestPaper{ @Override public void answerA() { System.out.println("答案: A"); } @Override public void answerB() { System.out.println("答案: A"); } }
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class TestPaperB extends AbstractTestPaper { @Override public void answerA() { System.out.println("答案: B"); } @Override public void answerB() { System.out.println("答案: B"); } }
测试类
/** * * @功能 * @创建人 gao_jie * @创建日期 Jun 17, 2009 * @版本 1.0 * */ public class Test { /** * @param args */ public static void main(String[] args) { AbstractTestPaper PaperA = new TestPaperA(); PaperA.questionA(); PaperA.questionB(); AbstractTestPaper PaperB = new TestPaperB(); PaperB.questionA(); PaperB.questionB(); } }
结果
题目A
你喜欢我吗? A:喜欢 B: 不喜欢
答案: A
题目B
你喜欢游泳吗? A:喜欢 B: 不喜欢
答案: A
题目A
你喜欢我吗? A:喜欢 B: 不喜欢
答案: B
题目B
你喜欢游泳吗? A:喜欢 B: 不喜欢
答案: B
而后面所用的方法就是设计模式中的模版方法。该方法的UML图为
发表评论
文章已被作者锁定,不允许评论。
-
面向对象设计原则-------总结
2015-07-14 10:55 0单一职能原则 ----- 设计类时,尽量功能单一,粒度合 ... -
MVC设计模式理解
2009-11-16 22:11 2047常常说MVC设计模式,今天抽空整理下,感觉模式这东 ... -
面向对象设计的原则---------迪米特原则
2009-10-15 21:15 3135迪米特原则(Law of Demeter) 1、迪米特原则的 ... -
面向对象设计的原则------接口隔离原则
2009-10-12 15:50 2765接口隔离原则(Interface ... -
面向对象设计的原则------依赖倒置原则
2009-10-11 18:27 3594依赖倒置原则(Dependence Inversion Pri ... -
面向对象设计的原则------里氏代换原则
2009-10-11 14:21 2609里氏代换原则(Liskov Sub ... -
面向对象设计的原则------开闭原则
2009-10-10 23:09 2441开闭原则(Open-Closed Prin ... -
面向对象设计的原则------单一职责原则
2009-10-09 20:36 3244学习设计模式,自然会涉及面向对象的设计原则,面向对 ... -
观察者模式
2009-08-04 22:14 1149gaojie -
组合模式-------树形模式
2009-08-03 20:42 22221、组合模式定义 ... -
命令模式
2009-08-02 14:06 18141、Commad模式是一种对象行为模式,它可以对发送者(se ... -
适配器和外观模式的区别
2009-08-01 18:23 1365ok -
适配器模式
2009-08-01 14:43 1161适配器模式通俗的说是将两个联系不密切的类或类与接口通过另一个类 ... -
门面模式(外观模式)
2009-07-29 22:49 14501、外观模式 为子系统的一组接口提供一个一致的界 ... -
简单工厂模式、代理模式、策略模式如此相似
2009-07-21 22:34 4072最近,一直在看设计模式,感觉简单工厂模式、代理模式、策略模式、 ... -
策略模式
2009-07-19 23:01 1326今天学习策略模式。策略模式是这个样子的。定义一个接 ... -
jdbcTemplate分页封装
2009-07-16 09:17 41091.JdbcTemplateExtend.java publi ... -
单例模式完全剖析
2009-07-07 21:01 1311概要 单例模式是最简单的设计模式之一,但是对于Jav ... -
DAO设计模式
2009-07-04 11:40 2207虽然DAO模式已经有了好多的成熟的框架,但它仍然是 ... -
工厂模式与DAO模式
2009-07-02 21:17 4386工厂模式是设计模式中较简单的模式,但在项目的开发过 ...
相关推荐
23个设计模式之一的模板模式,极客学院PPT源码及课件,模板模式的示例,
java设计模式之模板模式,实例子说明模板模式的使用场景。
走进设计模式之—— Template(模板模式)
复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回调(Callback)。A 类事先注册某个函数 F 到 B类
java模式--模板模式实例代码,请参考我的博客:http://blog.csdn.net/yayun0516
策略模式与模板模式的区别 - Eviltuzki的个人页面 - OSCHINA - 中文开源技术交流社区.mht
java设计模式中的模板模式,纯Java代码
模板模式的定义 模板模式的结构 模板模式的角色 模板模式的方法 模板模式的优点 模板模式的案例
设计模式 java 模板模式
策略模式结合模板方法模式
设计模式专题之(十三)模板模式---设计模式模板模式示例代码(python--c++)
NULL 博文链接:https://dada-fangfang.iteye.com/blog/1018674
设计模式之模板方法模式
模板方法模式的示例代码和文档,学习模板方法模式的参考资料。
模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
NULL 博文链接:https://bingyingao.iteye.com/blog/1264824
设计模式之策略模式与模板模式
设计模式之策略模式与模板模式.pptx
NULL 博文链接:https://gutou9.iteye.com/blog/286812