十分钟学会一个设计模式---行为模式---模板模式(Template Pattern)

77 阅读1分钟

一、应用场景

执行顺序已固定(step1 -> step2 ->step3 -> step4),但是步骤执行的逻辑不相同

二、实现逻辑

基类中,提供执行的步骤,具体的步骤实现交给子类完成

三、代码样例

class Base{
public:
    virtual ~Base()= default;
    void process() {
        step1();
        step2();
        step3();
        step4();
    }
protected:
    void step1() {cout << "step1" << endl;}
    void step4() {cout << "step4" << endl;}
    virtual void step2() = 0;
    virtual void step3() = 0;
};

class Derived : public Base{
    void step2() override {cout << "step2" << endl;}
    void step3() override {cout << "step3" << endl;}
};

int main() {
    Base* base = new Derived();
    base->process();
    return 0;
}

四、优点

1、封装不变部分,扩展可变部分

2、提取公共代码,便于维护

3、行为由父类控制,子类实现

五、缺点

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大