原创

设计模式之模板方法模式

作者:cndz 围观群众:661 更新于 标签:设计模式模板方法模式模板方法模式简介

简介

模板方法模式是一种行为型设计模式。它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的某些步骤。

在模板方法模式中,抽象类负责定义算法骨架,而具体实现则由子类来完成。子类可以通过继承抽象类并覆盖其中的方法来改变算法流程。

优缺点

优点:

  • 实现了代码重用,避免了重复代码;
  • 提高了代码的灵活性,使得子类可以根据需求来实现一些步骤;
  • 提高了代码的可扩展性,可以方便地增加或修改算法的步骤。

缺点:

  • 如果算法骨架需要修改,可能需要修改所有的子类;
  • 如果算法骨架比较复杂,可能会导致代码难以理解。

Java实例

以下是一个简单的Java实例,演示了模板方法模式的应用:

abstract class AbstractClass {
    public void templateMethod() {
        primitiveOperation1();
        primitiveOperation2();
    }
    abstract void primitiveOperation1();
    abstract void primitiveOperation2();
}

class ConcreteClass extends AbstractClass {
    void primitiveOperation1() {
        System.out.println("ConcreteClass.primitiveOperation1() called.");
    }
    void primitiveOperation2() {
        System.out.println("ConcreteClass.primitiveOperation2() called.");
    }
}

public class Main {
    public static void main(String[] args) {
        AbstractClass obj = new ConcreteClass();
        obj.templateMethod();
    }
}

运行结果:

ConcreteClass.primitiveOperation1() called.
ConcreteClass.primitiveOperation2() called.

应用场景

模板方法模式适用于以下场景:

  • 多个子类有相同的算法骨架,但某些步骤的实现不同;
  • 重构时,将相同的代码抽象到父类中,而将不同的代码留给子类实现。

总结

模板方法模式是一种常见的设计模式,它的优点在于可以提高代码的重用性、灵活性和可扩展性。但是,如果算法骨架需要修改,可能需要修改所有的子类,这就是其缺点之一。在实际应用中,可以根据具体的需求来选择是否使用模板方法模式。