C++设计模式——模板方法模式



模板方法是一种代码复用的基本技术,定义了一个操作中的算法骨架,而将一些步骤延迟到子类中
在使用模板方法时,很重要的一点是模板方法应当指明哪些操作是可以被重写的,以及哪些是必须被重写的。

#include 
using namespace std;


class AbstractClass 
{
public:
    virtual ~AbstractClass() {}
    virtual void PrimitiveOperation1() = 0;
    virtual void PrimitiveOperation2() = 0;
    void TemplateMethod() {
        PrimitiveOperation1();
        PrimitiveOperation2();
    }
};


class ConcreteClassA : public AbstractClass {
public:    
    void PrimitiveOperation1() {
        cout << "具体类A方法1实现" << endl;
    }
    void PrimitiveOperation2() {
        cout << "具体类A方法2实现" << endl;
    }
};


class ConcreteClassB : public AbstractClass {
public:
    void PrimitiveOperation1() {
        cout << "具体类B方法1实现" << endl;
    }
    void PrimitiveOperation2() {
        cout << "具体类B方法2实现" << endl;
    }
};

int main()
{
    AbstractClass* a = new ConcreteClassA();
    a->TemplateMethod();

    AbstractClass* b = new ConcreteClassB();
    b->TemplateMethod();

    system("pause");
    return 0;
}

相关