/*抽象模板的实现*/
public abstract class Templator {
public void hookMethod() {}//钩子方法,提供默认实现,子类可以提供具体 的实现
public void concreteMethod() {//组装方法
abstractMethod0();
abstractMethod1();
}
public abstract void abstractMethod0(); //抽象方法,需要子类提供具体的实现
public abstract void abstractMethod1(); //抽象方法,需要子类提供具体的实现
}
/*具体模板1*/
public class ConcreteTemplator1 extends Templator{
public void hookMethod() {
System.out.println("invoke ConcreteTemplator1.hookMethod()...");
}
public void abstractMethod0() {
System.out.println("invoke ConcreteTemplator1.abstractMethod0()...");
}
public void abstractMethod1() {
System.out.println("invoke ConcreteTemplator1.abstractMethod1()...");
}
/*具体模板2*/
public class ConcreteTemplator2 extends Templator {
public void hookMethod() {
System.out.println("invoke ConcreteTemplator2.hookMethod()...");
}
public void abstractMethod0() {
System.out.println("invoke ConcreteTemplator2.abstractMethod0()...");
}
public void abstractMethod1() {
System.out.println("invoke ConcreteTemplator2.abstractMethod1()...");
}
/*测试类*/
public class Client() {
public static void main(String[]args) {
Templator t1 = new ConcreteTemplator1();
t1.hookMethod();
t1.concreteMethod();
Templator t2 = new ConcreteTemplator2();
t2.hookMethod();
t2.concreteMethod();
}
}
//输出结果:
invoke ConcreteTemplator1.hookMethod()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator2.hookMethod()...
invoke ConcreteTemplator2.abstractMethod1()...
invoke ConcreteTemplator2.abstractMethod1()...
设计模式之———(行为模式)Template
最新推荐文章于 2025-12-26 13:57:01 发布
本文介绍了一种抽象模板设计模式的实现方式,通过定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
1823

被折叠的 条评论
为什么被折叠?



