设计模式(一)之模板方法模式(Template Method Pattern)
来源:互联网 发布:淘宝客和直通车哪个好 编辑:程序博客网 时间:2024/05/29 18:59
模板方法模式
1、描述
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以不改变一个算的结构即可重定义该算法的某些特定步骤。
2、使用场景
算法的操作过程是固定的,但是其中的某个操作是可以不同实现的。这种情况下,将可以有不同实现的操作抽象出来即可。比如我们进行数据库操作的时候,都是先打开数据库,然后进行CRUD操作,最后是关闭数据库。这个就是一个典型的使用情景。所以数据库操作的设计者将数据库的打开和关闭操作实现,将CRUD操作抽象,用户进行操作的时候,只要去实现CRUD方法即可。
3、模式中的角色
抽象模板:抽象模板是一个抽象类。抽象模板定义了若干个方法以表示一个算法的各个步骤,这些方法中有抽象方法,也有非抽象方法,其中的抽象方法称作原语操作(Primitive Operation)。重要的一点是,抽象模板中还定义了一个称作模板方法的方法,该方法不仅包含有抽象模板中表示算法步骤的方法调用,而且也可以包含有定义在抽象模板中的其他对象的方法调用,即模板方法定义了算法的骨架。
具体模板:具体模板是抽象模板的子类,实现抽象模板中的原语操作。
4、UML图
5、代码实现
AbstractTemplateDB
package org.sunday.pattern.template;/** * * @author sunday * 2013-12-12 * 邮箱:zhengchao1937@163.com * QQ:804935743 */public abstract class AbstractTemplateDB {private void openDB() {System.out.println("1,DB open------");}public abstract void crudDB();private void closeDB() {System.out.println("2,DB close--------");}public void doDB() {openDB();crudDB();closeDB();}}
ConcreteTemplateDB
package org.sunday.pattern.template;/** * * @author sunday * 2013-12-12 * 邮箱:zhengchao1937@163.com * QQ:804935743 */public class ConcreteTemplateDB extends AbstractTemplateDB {@Overridepublic void crudDB() {System.out.println("3,DB crud operate ------------");}}
Test
package org.sunday.main;/** * * @author sunday * 2013-12-12 * 邮箱:zhengchao1937@163.com * QQ:804935743 */import org.sunday.pattern.template.ConcreteTemplateDB;public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new ConcreteTemplateDB().doDB(); }}
运行之后打印信息:
代码:http://download.csdn.net/detail/ff20081528/6703981
0 0
- 设计模式(一)之模板方法模式(Template Method Pattern)
- 大话设计模式之模板方法模式(Template Method Pattern)
- Php设计模式之【模板方法模式Template Method Pattern 】
- JAVA设计模式之 模板方法模式【Template Method Pattern】
- 设计模式(1)- 模板方法 Template Method Pattern
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- 23种设计模式之-----模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)。
- 模板方法模式(Template Method Pattern)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式19:Template Method Pattern (模板方法模式)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- hdu 4810 Wall Painting
- 利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
- 百万级PHP网站Poppen.de的架构分享
- 【分享】双12了,也没啥可送大家的,就送大家点商业源码吧!
- Linux内核编程接口函数
- 设计模式(一)之模板方法模式(Template Method Pattern)
- 删除重复的数据
- 解决maven与eclipse中@override出现must override a superclass method错误
- Spring3:如何在Spring3中配置并使用FreeMarker?
- curl默认超时(timeout)时间
- 速度之王 — LZ4压缩算法(二)
- C++/CLI资料汇总
- 使用WebClient实现文件下载
- JAVA中的Calendar