/************************************************************************/
/* 模板方法模式 */
/************************************************************************/
/*
将重复的行为在父类中抽象,具体实现在子类种完成,而行为的调用代码在父类中完成
利用多态原理,实际的调用的是子类的行为
*/
/*这里以A、B两人答同一份试卷为例*/
#include<iostream>
using namespace std;
class TestPaper
{
public:
/*A和B都具有答题的行为,但是具体的行为的表现却不一样*/
virtual void Answer1() = 0;
virtual void Answer2() = 0;
void Question1()
{
cout<<"凤姐是不是女人? A.是 B.不是"<<endl;
Answer1();
}
void Question2()
{
cout<<"如果世界上只剩下凤姐和你,你会取她吗? A.我宁愿自杀 B.为了人类哥从了"<<endl;
Answer2();
}
};
//A的答题试卷
class TestPaperA : public TestPaper
{
public:
void Answer1()
{
cout<<"A"<<endl;
}
void Answer2()
{
cout<<"A"<<endl;
}
};
//B的答题试卷
class TestPaperB : public TestPaper
{
public:
void Answer1()
{
cout<<"B"<<endl;
}
void Answer2()
{
cout<<"B"<<endl;
}
};
void main()
{
cout<<"A的试卷"<<endl;
TestPaper * A = new TestPaperA();
A->Question1();
A->Question2();
cout<<"................................................................................"<<endl;
cout<<"B的试卷"<<endl;
TestPaperB *B = new TestPaperB();
B->Question1();
B->Question2();
}