在Java中,模板方法模式是一种行为设计模式,它定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。以下是一个简单的示例:
// 抽象类定义了模板方法和一些基本的方法,子类可以根据需要实现这些方法
abstract class AbstractClass {
// 模板方法定义了算法的骨架
public final void templateMethod() {
operation1(); // 调用基本方法1
operation2(); // 调用基本方法2
operation3(); // 调用基本方法3
}
// 基本方法1,由子类实现
abstract void operation1();
// 基本方法2,由子类实现
abstract void operation2();
// 基本方法3,子类可以选择性地覆盖
void operation3() {
System.out.println("Default implementation of operation3");
}
}
// 具体子类实现基本方法
class ConcreteClass extends AbstractClass {
// 实现基本方法1
void operation1() {
System.out.println("ConcreteClass: Performing operation1");
}
// 实现基本方法2
void operation2() {
System.out.println("ConcreteClass: Performing operation2");
}
// 子类可以选择性地覆盖基本方法3
void operation3() {
System.out.println("ConcreteClass: Performing custom operation3");
}
}
public class Main {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClass();
abstractClass.templateMethod(); // 调用模板方法
}
}
在这个例子中,AbstractClass 是抽象类,定义了模板方法 templateMethod() 和一些基本方法,其中 operation1() 和 operation2() 是抽象方法,需要由具体的子类实现。ConcreteClass 是具体子类,实现了 AbstractClass 中的抽象方法,并可以选择性地覆盖 operation3() 方法。在 Main 类中,我们创建了 ConcreteClass 的实例并调用了模板方法 templateMethod(),它会按照定义的算法骨架执行各个基本方法。