模板方法模式

模板方法模式

1.何为模板方法模式

​ 定义一个操作中算法的骨架(稳定),而将一些步骤(变化)延迟到子类中。这使得我们可以在不改变算法结构的情况下,重写算法的某些步骤。

2.模板方法模式的意义和使用场景

​ 在软件构建中,对某一任务,它常常有稳定的算法结构,但子步骤经常变化(如框架和应用之间)。模板方法模式为算法提供了灵活的扩展点,是代码复用的基本操作。核心思想就是晚绑定,“不要调用我,让我调用你(框架开发人员如是说)”,即让框架去调用用户重写的代码。

3.模板方法的实现

​ 将算法中某些变化的步骤声明为虚函数,使用者通过重写实现所需的步骤。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 抽象基类 - 包含模板方法和具体方法
class AbstractClass {
public:
void templateMethod() {
// 调用抽象方法,由子类实现
primitiveOperation1();
// 调用具体方法
concreteOperation();
// 调用抽象方法,由子类实现
primitiveOperation2();
}
virtual void primitiveOperation1() = 0;
virtual void primitiveOperation2() = 0;
void concreteOperation() {
std::cout << "This is a concrete operation" << std::endl;
}
};
// 具体子类 - 实现抽象方法
class ConcreteClass : public AbstractClass {
public:
void primitiveOperation1() override {
std::cout << "Concrete Class: Primitive Operation 1" << std::endl;
}
void primitiveOperation2() override {
std::cout << "Concrete Class: Primitive Operation 2" << std::endl;
}
};