模板方法模式

来源:互联网 发布:计算机网络原理 知乎 编辑:程序博客网 时间:2024/05/01 00:26

模板方法模式:定义一个算法框架,将里面的操作步骤推迟到子类中去执行,这样使得子类不用改变框架,只需改变某些操作步骤方法

 

//test.h#ifndef _TEST_H_#define _TEST_H_#include <iostream>#include <string>using namespace std;class TestPaper{    public:        TestPaper() {}        virtual ~TestPaper() {}        void question()        {            question1();            question2();            question3();        }    protected:        void question1()        {            cout << "问题1:" << endl;            cout << answer1() << endl << endl;        }            void question2()        {            cout << "问题2:" << endl;            cout << answer2() << endl << endl;        }            void question3()        {            cout << "问题3:" << endl;            cout << answer3() << endl << endl;        }                virtual char answer1()        {            return ' ';        }                virtual char answer2()        {            return ' ';        }                virtual char answer3()        {            return ' ';        }};class TestPaperA: public TestPaper{    public:        void question1()        {            TestPaper::question1();        }        void question2()        {            TestPaper::question2();        }        void question3()        {            TestPaper::question3();        }                char answer1()        {            return 'a';        }        char answer2()        {            return 'b';        }        char answer3()        {            return 'c';        }};class TestPaperB: public TestPaper{    public:        void question1()        {            TestPaper::question1();        }        void question2()        {            TestPaper::question2();        }        void question3()        {            TestPaper::question3();        }        char answer1()        {            return 'c';        }        char answer2()        {            return 'd';        }        char answer3()        {            return 'a';        }};#endif


 

#include <iostream>#include "test.h"using namespace std;int main(){        TestPaperA a;    TestPaperB b;    cout << "答卷A:" << endl;    a.question();    cout << "答卷B:" << endl;    b.question();        return 0;}


 

原创粉丝点击