模板模式详解
2013-08-04 09:21
232 查看
模板模式(Template):
模板模式:
定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。
模板方法模式的组成
–父类角色:提供模板。
–子类角色:为模板提供实现。
程序示例:
package com.zp.pattern.template;
/**
* 定义一个抽象的父类:提供模板,使子类可以有个统一的执行顺序;
* 抽象类中既可以有抽象方法,也可以有具体方法,而接口只能有抽象方法;
*/
public abstract class Template {
//具体方法来确定操作步骤的具体顺序(模板化):
public void doTemplate(){
this.method1();
this.method2();
this.method3();
}
//抽象方法来确定执行步骤:
public abstract void method1();
public abstract void method2();
public abstract void method3();
}
package com.zp.pattern.template;
/**
* 子类角色:为模板提供具体实现。
*/
public class TemplateImpl extends Template {
@Override
public void method1() {
System.out.println("step1");
}
@Override
public void method2() {
System.out.println("step2");
}
@Override
public void method3() {
System.out.println("step3");
}
//可以通过重写来修改执行顺序的
// @Override
// public void doTemplate() {
// this.method3();
// this.method2();
// this.method1();
// }
}
package com.zp.pattern.template;
public class Test {
public static void main(String[] args) {
Template t = new TemplateImpl();
t.doTemplate();
}
}
结果:step1
step2
step3
模板模式:
定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。
模板方法模式的组成
–父类角色:提供模板。
–子类角色:为模板提供实现。
程序示例:
package com.zp.pattern.template;
/**
* 定义一个抽象的父类:提供模板,使子类可以有个统一的执行顺序;
* 抽象类中既可以有抽象方法,也可以有具体方法,而接口只能有抽象方法;
*/
public abstract class Template {
//具体方法来确定操作步骤的具体顺序(模板化):
public void doTemplate(){
this.method1();
this.method2();
this.method3();
}
//抽象方法来确定执行步骤:
public abstract void method1();
public abstract void method2();
public abstract void method3();
}
package com.zp.pattern.template;
/**
* 子类角色:为模板提供具体实现。
*/
public class TemplateImpl extends Template {
@Override
public void method1() {
System.out.println("step1");
}
@Override
public void method2() {
System.out.println("step2");
}
@Override
public void method3() {
System.out.println("step3");
}
//可以通过重写来修改执行顺序的
// @Override
// public void doTemplate() {
// this.method3();
// this.method2();
// this.method1();
// }
}
package com.zp.pattern.template;
public class Test {
public static void main(String[] args) {
Template t = new TemplateImpl();
t.doTemplate();
}
}
结果:step1
step2
step3
相关文章推荐
- 设计模式 - 模板方法模式(template method pattern) 排序(sort) 详解
- 设计模式(4)-模板方法模式详解(易懂)
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- Java开发中的23种设计模式详解----模板方法模式(Template Method)
- 深入理解JavaScript系列(41):设计模式之模板方法详解
- 模板方法模式 详解
- Java设计模式-模板方法模式详解
- 详解设计模式——模板方法模式
- 走穿java23种设计模式--13模板方法模式详解
- java设计模式之模板方法模式详解
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- 设计模式 - 模板方法模式(template method pattern) JFrame 详解
- PHP设计模式之模板方法模式定义与用法详解
- 设计模式之 模板方法模式详解(包含与类加载器不得不说的故事)
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- 模板方法模式详解(包含与类加载器不得不说的故事)
- 设计模式 - 模板方法模式(template method pattern) Applet 详解
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- Android编程设计模式之模板方法模式详解
- (九)模板方法模式详解(包含与类加载器不得不说的故事)