设计模式7:模板方法模式
2014-10-20 17:48
134 查看
一、我的描述
模板方法模式是将不变的行为搬到超类中,去除子类中重复的代码来体现它的优势,提供了很好的代码复用。
我的理解就是就像是咱们学画画的时候,老师说大家比着这个苹果,然后画一幅自己的苹果,然后大家都在那画,但是大家画出来的都不相同,但是呢我们相同的是我们比照的模式是相同的苹果。
再举个例子:某一次考试,同样的试卷,A得到90分,B得到80分。这次考试相同的是:A和B的试卷是相同的,但是他俩得分不一样是因为他们的答案不一样。那么延伸到模板方法模式中,不变的是试卷的试题,我们把它搬到超类中。不同的是这次考试中我们的答案。
二、UML 图
那么针对于我上面考试的例子,我的UML图应该是:
三、我的考试模板代码实现
模板方法模式是将不变的行为搬到超类中,去除子类中重复的代码来体现它的优势,提供了很好的代码复用。
我的理解就是就像是咱们学画画的时候,老师说大家比着这个苹果,然后画一幅自己的苹果,然后大家都在那画,但是大家画出来的都不相同,但是呢我们相同的是我们比照的模式是相同的苹果。
再举个例子:某一次考试,同样的试卷,A得到90分,B得到80分。这次考试相同的是:A和B的试卷是相同的,但是他俩得分不一样是因为他们的答案不一样。那么延伸到模板方法模式中,不变的是试卷的试题,我们把它搬到超类中。不同的是这次考试中我们的答案。
二、UML 图
那么针对于我上面考试的例子,我的UML图应该是:
三、我的考试模板代码实现
#include<iostream> using namespace std; class Test { public: void Question() { cout << "Question1 : who is Feng'jie?" << endl; } virtual void Answer() {} }; class Answer1 : public Test { public: virtual void Answer() { cout << "Answer1's answer: " << "C" << endl; } }; class Answer2 : public Test { public: virtual void Answer() { cout << "Answer2's answer: " << "B" << endl; } }; int main() { Test *p_test1 = new Answer1(); p_test1->Question(); p_test1->Answer(); delete p_test1; Test *p_test2 = new Answer2(); p_test2->Question(); p_test2->Answer(); delete p_test2; return 0; }
相关文章推荐
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式笔记 13. TemplateMethod 模板方法模式(行为型模式)
- 设计模式之模板方法模式(Template Method)
- 设计模式学习之 模板方法模式
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式——模板方法模式(TemplateMethod)
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式系列漫谈之六 - 模板方法模式
- 设计模式笔记(十五) —— 模板方法模式
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式(七)[模板方法(Template Method)模式]
- 第六个设计模式之:模板方法
- 浅析设计模式之模板方法
- 设计模式一模板方法模式(spring)
- 白话设计模式--行为型模式--Template Method模式(模板方法模式)
- 设计模式(1)- 模板方法 Template Method Pattern