设计模式学习(九)————模板方法模式
2016-09-13 09:26
211 查看
模板方法模式:当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其中个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式处理!
其定义是:定义一个c操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤!
下面使用考试回答一个试卷的答案作为例子进行示例:
有代码可以看出,做试卷的时候每个题目都是一样的,唯一的区别是每个人的答案不同,这样就可以把题目抽象成一个基类,将题目的答案作为虚函数返回,这样子类就可以得到不同的结果而重新实现这些答案的虚函数,非常巧妙!
最后放上源码地址:https://github.com/Dongzhixiao/designMode_qt/tree/master/copyQuestion_template_method_pattern_10
其定义是:定义一个c操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤!
下面使用考试回答一个试卷的答案作为例子进行示例:
#ifndef TESTPAPER #define TESTPAPER #include <QString> #include <QtDebug> class TestPaper { public: TestPaper(){} void question1() { qDebug()<<"第一题"<<"答案"<<Answer1(); } void question2() { qDebug()<<"第一题"<<"答案"<<Answer2(); } virtual ~TestPaper(){} protected: QString virtual Answer1()=0; QString virtual Answer2()=0; }; class TestPaper1 final:public TestPaper { public: QString Answer1() override { return "A"; } QString Answer2() override { return "B"; } }; class TestPaper2:public TestPaper { public: QString Answer1() override { return "C"; } QString Answer2() override { return "D"; } }; #endif // TESTPAPER #include "testpaper.h" int main(int argc, char *argv[]) { TestPaper *a = new TestPaper1(); a->question1(); a->question2(); delete a; a = new TestPaper2(); a->question1(); a->question2(); return 0; }
有代码可以看出,做试卷的时候每个题目都是一样的,唯一的区别是每个人的答案不同,这样就可以把题目抽象成一个基类,将题目的答案作为虚函数返回,这样子类就可以得到不同的结果而重新实现这些答案的虚函数,非常巧妙!
最后放上源码地址:https://github.com/Dongzhixiao/designMode_qt/tree/master/copyQuestion_template_method_pattern_10
相关文章推荐
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习笔记-模板方法
- 设计模式学习之----模板方法模式
- 设计模式学习-每日一记(16.模板方法模式)
- 模板方法模式- 设计模式学习
- 设计模式C++学习笔记之九(Template Method模板方法模式)
- 设计模式学习笔记——模板方法模式
- 【HeadFirst 设计模式学习笔记】8 模板方法模式
- 设计模式学习总结-模板方法模式(Template Method)
- 设计模式学习笔记(七)之模板方法模式(Template Method)
- 拨开“繁”云见天日 -- 学习设计模式模板方法有感
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习笔记(二十四)——Template Method模板方法
- 《Head First 设计模式》学习笔记:模板方法模式
- HeadFirst 设计模式学习笔记8--模板方法模式
- 设计模式学习-Template Method(模板方法)
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- java 设计模式 学习笔记(9) 模板方法模式
- 设计模式学习-----模板方法模式
- 设计模式学习笔记-模板方法模式