模板方法设计模式
// 抽象类定义了算法的骨架
abstract class AbstractClass {
// 模板方法定义了算法的步骤
public void templateMethod() {
step1();
step2();
step3();
}
// 抽象方法,由子类实现
abstract void step1();
abstract void step2();
// 钩子方法,子类可以选择性地覆盖
void step3() {
System.out.println("Default implementation of step3");
}
}
// 具体子类实现抽象类中的抽象方法
class ConcreteClass extends AbstractClass {
@Override
void step1() {
System.out.println("Step 1");
}
@Override
void step2() {
System.out.println("Step 2");
}
// 可选地覆盖钩子方法
@Override
void step3() {
System.out.println("Custom implementation of step3");
}
}
public class Main {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClass();
abstractClass.templateMethod();
}
}