模板方法模式定义:定义一个操作中的算法骨架,而把一些步骤延迟到子类中。模板方法模式可以让子类不改变一个算法的结构就可以改变算法的某些特定步骤。
说明:有时候,我们经常遇到由一些列步骤构成的过程需要执行,这个过程从高层看是相同的,但有些步骤的实现可能不同,这个时候可以考虑模板方法模式。
其结构图如下:
设计实例(抄试卷):
#include <iostream>
using namespace std;
class TestPaper
{
public:
virtual char getAnswer1(void)=0;
virtual char getAnswer2(void)=0;
virtual char getAnswer3(void)=0;
void TestQuestion1()
{
cout<<"这是题目一,请输入答案:";
cout<<getAnswer1()<<endl;
}
void TestQuestion2()
{
cout<<"这是题目二,请输入答案:";
cout<<getAnswer2()<<endl;
}
void TestQuestion3()
{
cout<<"这是题目三,请输入答案:";
cout<<getAnswer3()<<endl;
}
};
class TestPaperA:public TestPaper
{
char getAnswer1()
{
return 'A';
}
char getAnswer2()
{
return 'B';
}
char getAnswer3()
{
return 'C';
}
};
class TestPaperB:public TestPaper
{
char getAnswer1()
{
return 'B';
}
char getAnswer2()
{
return 'C';
}
char getAnswer3()
{
return 'D';
}
};
void main()
{
TestPaperA testA;
TestPaperB testB;
cout<<"学生A的试卷:\r\n";
testA.TestQuestion1();
testA.TestQuestion2();
testA.TestQuestion3();
cout<<endl<<endl;
cout<<"学生B的试卷:\r\n";
testB.TestQuestion1();
testB.TestQuestion2();
testB.TestQuestion3();
}