/*抽象模板的实现*/
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
最新推荐文章于 2024-10-04 08:38:41 发布