模板方法模式
思想:定义一个算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法的情况下重定义该算法的某些特定步骤(算法的某些特定步骤需要根据子类的环境做出改变)
hook思想
package study.org;
public class Demo {
public static void main(String[] args) {
AbstractTemplate template = new ConcreteClass1();
template.templateMethod();
}
}
abstract class AbstractTemplate {
void templateMethod() {
method1();
method2();
if (hookMethod3()) {
method3();
}
}
void method1() {
System.out.println("AbstractTemplate.method1()");
}
abstract void method2();
abstract void method3();
Boolean hookMethod3() {
return false;
}
}
class ConcreteClass1 extends AbstractTemplate {
@Override
void method2() {
System.out.println("ConcreteClass1.method2()");
}
@Override
void method3() {
System.out.println("ConcreteClass1.method3()");
}
@Override
Boolean hookMethod3() {
return true;
}
}
网友评论