模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
下面是一个简单的模板方法模式的示例:
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 中定义的顺序执行步骤,其中一些步骤会调用子类实现的方法。这样,子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。