码迷,mamicode.com
首页 > 其他好文 > 详细

Template_Method

时间:2014-12-15 10:19:26      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   ar   color   os   sp   on   

#include <iostream>

using namespace std;
#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; }






class TemplateMethod
{
public:
    void AlgorithmA() { Step1(); Step2(); Step3(); }
    void AlgorithmB() { Step3(); Step2(); Step1(); }
    
protected:
    virtual void Step1()=0;
    virtual void Step2()=0;
    virtual void Step3()=0;
};


class ConcreteTemplateA : public TemplateMethod
{
public:
    ConcreteTemplateA() {}
    ~ConcreteTemplateA() {}

protected:
    void Step1() { cout<<"ConcreteTemplateA::Step1"<<endl; }
    void Step2() { cout<<"ConcreteTemplateA::Step2"<<endl; }
    void Step3() { cout<<"ConcreteTemplateA::Step3"<<endl; }
};


class ConcreteTemplateB : public TemplateMethod
{
public:
    ConcreteTemplateB() {}
    ~ConcreteTemplateB() {}

protected:
    void Step1() { cout<<"ConcreteTemplateB::Step1"<<endl; }
    void Step2() { cout<<"ConcreteTemplateB::Step2"<<endl; }
    void Step3() { cout<<"ConcreteTemplateB::Step3"<<endl; }
};






int main(int argc, char *argv[])
{
    TemplateMethod* pTemplate = NULL;
    

    pTemplate = new ConcreteTemplateA;
    pTemplate->AlgorithmA();
    DESTROY_POINTER(pTemplate);
    
    pTemplate = new ConcreteTemplateB;
    pTemplate->AlgorithmB();
    DESTROY_POINTER(pTemplate);
    

    return 0;
}

 

Template_Method

标签:des   style   blog   io   ar   color   os   sp   on   

原文地址:http://www.cnblogs.com/stanley198610281217/p/4164197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!