模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
下面是一个简单的模板方法模式的示例:
public abstract class AbstractClass {
public void templateMethod() {
step1();
step2();
step3();
}
protected abstract void step1();
protected abstract void step2();
protected abstract void step3();
}
public class ConcreteClass extends AbstractClass {
@Override
protected void step1() {
System.out.println("ConcreteClass: step1");
}
@Override
protected void step2() {
System.out.println("ConcreteClass: step2");
}
@Override
protected void step3() {
System.out.println("ConcreteClass: step3");
}
}
public class Client {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClass();
abstractClass.templateMethod();
}
}在上面的示例中,AbstractClass 是抽象类,它定义了一个模板方法 templateMethod(),该方法包含了一些步骤,其中一些步骤是抽象的,需要由子类实现。ConcreteClass 是具体子类,它实现了 AbstractClass 中的抽象方法,并重写了模板方法中的步骤。Client 是客户端类,它创建了一个 ConcreteClass 对象,并调用了它的模板方法。
当客户端调用 templateMethod() 方法时,它会按照 AbstractClass 中定义的顺序执行步骤,其中一些步骤会调用子类实现的方法。这样,子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。