模板方法模式
优点:
1.模板方法模式在一个类中形式化地定义算法,而由它的子类实现细节的处理。
2.模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为。
缺点:
每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象,但是更加符合“单一职责原则”,使得类的内聚性得以提高。
#include <iostream>
using namespace std;
//试卷抽象基类
class TestPaper {
public:
//回答问题的过程
void DoTestPaper() {
StudentName();
TestTitleOne();
TestTitleTwo();
}
//题目一
void TestTitleOne() {
cout << "题目一:X国的房价会降下来吗?" << endl;
AnswerOne();
}
//题目二
void TestTitleTwo() {
cout << "题目二:说说你的新闻联播的看法?" << endl;
AnswerTwo();
}
//回答的问题
virtual void StudentName() = 0;
virtual void AnswerOne() = 0;
virtual void AnswerTwo() = 0;
};
//小红的试卷
class XiaoHong : public TestPaper {
public:
void StudentName() {
cout << "姓名:小红" << endl;
}
void AnswerOne() {
cout << "答:相信X,相信国家,明年一定降下来。" << endl;
}
void AnswerTwo() {
cout << "答:新闻联播是我最喜欢的节目。" << endl;
}
};
//小张的试卷
class XiaoZhang : public TestPaper {
public:
void StudentName() {
cout << "姓名:小张" << endl;
}
void AnswerOne() {
cout << "答:呵呵" << endl;
}
void AnswerTwo() {
cout << "答:我很幸福" << endl;
}
};
int main() {
XiaoHong paper1;
paper1.DoTestPaper();
XiaoZhang paper2;
paper2.DoTestPaper();
return 0;
}