模板模式
定义一个操作中的固定的算法骨架,而将一些步骤延迟到子类中。
把固定的实现写在基类中,变化的部分定为纯虚函数,由子类实现。
场景:
1、在软件构建过程中,对于某一项,它常常有稳定的整体操作结构。但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架和应用之间的关系)
而无法和合任务的整体结构同时实现。
2、如何在确定稳定操作结构的前提下,来灵活应对各个步骤的变化或者晚期实现需求?
class Library { public: void run() { step1(); step2(); step3(); step4(); step5(); } protected: void step1(){} void step2(){} void step3(){} virtual void step4() = 0; virtual void step5() = 0; }; class Application :public Library { protected: virtual void step4(){//...} virtual void step5() {//...} };
Library *a = new Application(); a->run();