一项任务,有稳定的总体结构和多边的子步骤。可使用模板方法(Template Method)。ios
模板方法,定义一个操做中的算法骨架,而将一些步骤延迟到子类,使得子类能够不改变一个算法的结构,但能够重定义该算法的某些特定步骤。算法
函数Run()是类库中的框架函数供外部调用。Step1() 和Step2()在类库中已经实现,Step3()须要用户在子类中实现。设计模式
#include<iostream> using namespace std; class Library { public: void Run() { Step1(); Step2(); Step3(); } //析构函数须要是虚函数 virtual ~Library(){ } protected: void Step1() { } void Step2() { } virtual void Step3() = 0; }; class Application : public Library { public: virtual void Step3() override { } }; int main() { Library* pLib = new Application(); pLib->Run(); delete pLib; }
模板方法是很基础的设计模式,它用最简单的机制实现代码复用。框架
“不要调用我,让我来调用你”的反向控制结构是模板方法的典型应用。ide