模板方法模式(《大话设计模式》):
- 模板方法模式
- 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
- 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
- 通过把重复出现的、不变的行为搬移到父类,去除子类中的重复代码
- 场景:做选择题,每个人做的题都是一样的,只需要选择A、B、C、D
-
#include <iostream> #include <string> using namespace std; class TestPaper { public: TestPaper() {} virtual ~TestPaper() = 0 {} void QuestionOne() { cout << "1 + 1 = ( )\n" "A.0, B.1, C.2, D.-1\n" "Answer: " << AnswerOne() << endl; } private: virtual string AnswerOne() = 0; }; class PersonA :public TestPaper { public: PersonA() {} virtual ~PersonA() override {} private: virtual string AnswerOne() override { return string("C"); } }; class PersonB :public TestPaper { public: PersonB() {} virtual ~PersonB() override {} private: virtual string AnswerOne() override { return string("D"); } }; int main() { TestPaper *t1 = new PersonA; TestPaper *t2 = new PersonB; t1->QuestionOne(); t2->QuestionOne(); system("pause"); return 0; }