设计模式——模板方法
2014-08-17 01:28
162 查看
这个在spring中表现的淋漓尽致,比如HibernateTemplate Support等等
用自己的话说,模板方法模式,就是提供了一个(比较复杂的)模板方法,它规定了具体的工作流程。——而其中某些步骤的工作细节待具体模板来实现
package designpattern.behavior.templatemethod; public abstract class ATemplate { public abstract void method1(); // 抽象方法,带子类实现—— 因为不同具体模板而已,—— 这正是模板方法模式的意义所在 public void method2() { System.out.println("ATemplate.method2()"); } public void method3() { //钩子方法 } public void work() { method1(); method2(); method3(); } } package designpattern.behavior.templatemethod; public class MysqlTempmlate extends ATemplate { @Override public void method1() { System.out.println("MysqlTempmlate.method1()"); } @Override public void method3() { System.out.println("MysqlTempmlate.method2()"); } } package designpattern.behavior.templatemethod; public class OracleTempmlate extends ATemplate { @Override public void method1() { System.out.println("OracleTempmlate.method1()"); } @Override public void method3() { System.out.println("OracleTempmlate.method2()"); } } package designpattern.behavior.templatemethod; /* * * * (1) AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(Template Method),用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法。 (2) ConcreteClass(具体子类):它是抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作 * * * 同时,在抽象类中实现了一个模板方法(Template Method),用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法 * * * 2. 基本方法 基本方法是实现算法各个步骤的方法,是模板方法的组成部分。基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)。 (1) 抽象方法:一个抽象方法由抽象类声明、由其具体子类实现。在C#语言里一个抽象方法以abstract关键字标识。 (2) 具体方法:一个具体方法由一个抽象类或具体类声明并实现,其子类可以进行覆盖也可以直接继承。 (3) 钩子方法:一个钩子方法由一个抽象类或具体类声明并实现,而其子类可能会加以扩展。通常在父类中给出的实现是一个空实现(可使用virtual关键字将其定义为虚函数),并以该空实现作为方法的默认实现,当然钩子方法也可以提供一个非空的默认实现。 */ public class Client { /** * @param args */ public static void main(String[] args) { ATemplate template = new MysqlTempmlate(); template.work(); template = new OracleTempmlate(); template.work(); } }
用自己的话说,模板方法模式,就是提供了一个(比较复杂的)模板方法,它规定了具体的工作流程。——而其中某些步骤的工作细节待具体模板来实现
相关文章推荐
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式笔记 13. TemplateMethod 模板方法模式(行为型模式)
- 设计模式之模板方法模式(Template Method)
- 设计模式学习之 模板方法模式
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式——模板方法模式(TemplateMethod)
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式系列漫谈之六 - 模板方法模式
- 设计模式笔记(十五) —— 模板方法模式
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式(七)[模板方法(Template Method)模式]
- 第六个设计模式之:模板方法
- 浅析设计模式之模板方法
- 设计模式一模板方法模式(spring)
- 白话设计模式--行为型模式--Template Method模式(模板方法模式)
- 设计模式(1)- 模板方法 Template Method Pattern