行为模式之Template Method 模式

重构获得模式 Refactoring to Patterns

面向对象设计模式是--应对变化,提高复用

重构关键技巧

静态---动态、早绑定---晚绑定、继承---组合、编译时依赖---运行时依赖、紧耦合---松耦合

组件协昨模式

框架(Framwork\lib)与应用的划分,组件协助通过 晚期的绑定,来实现框架和应用之间的松耦合。

典型的模式

Template Method   --   虚函数的多态 -- 你不要调用我,让我调用你 (晚绑定)

Strategy

Observer/Event

动机 Motivation

灵活的应对需求变化的实现。

Template Method

calss library {
public:
    void run() {
        Step1();
        
        if(step2()) {
            step3();
        }
        
        for(int i = 0; i<4; i++) {
            step4();
        }
        
        step5();
    }
    //  基类 的析构 必须是须的,否则在delete 子类时,不会调用析构。
    virtual ~ library() {}
    
protected:
    // 不变的功能
    void step1() { }
    void step3() { }
    void step5() { }
    
    // 变化的--子类去实现
    virtual bool step2() = 0; 
    virtual void step4() = 0;
};

class app : public library {
protected:
    virtual bool step2() {
    // 重写    
    }
    virtual void step4() {
    // 重写    
    }
};
// -- library 调用 app 中的方法 我们称为早绑定,反之为晚期绑定;
int main() {
    library *p = new app();
    p->run();
    delete p;
};

模式的定义

定义一个操作中算法的骨架(稳定),而将一些步骤延迟(变化)到子类实现。Template Method

使得子类不改变(复用)一个算法的机构,即可以重新定义(override 重写)该算法的某些特定的步骤。

你可能感兴趣的:(行为模式之Template Method 模式)