什么是行为型模式?
模板模式(Template Pattern)是一种行为设计模式,它定义了一个算法的骨架,将某些步骤的实现延迟到子类。在模板模式中,父类中定义了一个模板方法,该方法定义了算法的骨架,包括一些基本的操作步骤,而具体的实现可以在子类中实现。
模板模式的核心思想是将通用的算法步骤放在父类中,并将可变的部分延迟到子类中实现。这样可以确保算法结构的稳定性,同时允许子类根据需要进行相关步骤的定制和扩展。
代码实例
// 抽象类,定义了模板方法和基本操作步骤
abstract class AbstractClass {
// 模板方法,定义算法的骨架,包括基本的操作步骤
public void templateMethod() {
step1();
step2();
step3();
}
// 基本操作步骤1,由子类实现
protected abstract void step1();
// 基本操作步骤2,由子类实现
protected abstract void step2();
// 基本操作步骤3,由子类实现
protected abstract void step3();
}
// 具体子类,实现基本操作步骤
class ConcreteClass extends AbstractClass {
protected void step1() {
System.out.println("ConcreteClass: Step 1");
}
protected void step2() {
System.out.println("ConcreteClass: Step 2");
}
protected void step3() {
System.out.println("ConcreteClass: Step 3");
}
}
public class TemplatePatternExample {
public static void main(String[] args) {
// 创建具体子类对象
AbstractClass abstractClass = new ConcreteClass();
// 调用模板方法,执行算法
abstractClass.templateMethod();
}
}
从上面的代码中可以看到,AbstractClass
是抽象类,定义了一个模板方法 templateMethod()
,该方法包含了一些基本的操作步骤 step1()
、step2()
和 step3()
。这些步骤是抽象方法,需要在具体的子类中实现。ConcreteClass
是具体子类,它继承了抽象类 AbstractClass
并实现了对应的步骤方法。在客户端的 main()
方法中,我们创建一个具体子类的对象,并调用 templateMethod()
方法来执行算法。父类的模板方法会按照预定义的顺序调用子类的具体实现。
通过模板模式,我们可以将可变的部分留给子类来实现,从而提供了灵活性和可扩展性。同时,模板模式还可以提高代码的复用性,将通用的算法步骤抽象到父类中,避免了重复的代码编写。