模板方法模式
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; } };
|