设计模式 C++版:第二十三式 模板方法

来源:互联网 发布:达芬奇 去闪烁 mac 编辑:程序博客网 时间:2024/06/14 10:15

定义一个操作中的算法骨架,而将一些步骤延迟到子类中。用一句听得懂的话说,就是把一个算法中不变的部分搬移到超类——父类中,把变的部分留给子类,通过接口重写的方式完成各自变化的部分。好处是,减少了代码的耦合,提高了复用。

简单代码如下:

class  Father_Class{public:void template_method(){/**不变部分**///可变部分 method1(); method2();  /*  *不变部分  *  */};//可变部分virtual void method1() = 0;virtual void method2() = 0;};class Sub1:public Father_Class{public:virtual void method1(){ cout << "sub1  method1" << endl; };virtual void method2(){ cout << "sub1  method2" << endl; };};class Sub2 :public Father_Class{public:virtual void method1(){ cout << "sub2  method1" << endl; };virtual void method2(){ cout << "sub2  method2" << endl; };};int main(){Father_Class * fc = new Sub1;fc->template_method();delete fc;fc = new Sub2;fc->template_method();delete fc;fc = nullptr;return 0;}