设计模式之七、模板方法模式TemplateMethod
2011-03-22 17:24
281 查看
设计模式之七、模板方法模式TemplateMethod</br>
适用范围:定义一个操作的骨架算法,而将一些步骤延迟到子类中,模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。</br>
实例:如考试试题,试题可以作为抽象的模板类,而每一个学生的答案即为一个子类。</br>
模板方法模式的结构图如下所示:</br>
C++关键代码如下:</br>
1、父类关键代码如下:IAbstract.h</br>
virtual int GetResutl() = 0;</br>
2、子类A的实现:CConcreteA.cpp</br>
int CConcreteA::GetResult()</br>
{</br>
return 1;</br>
}</br>
3、子类B的实现:CConcreteB.cpp</br>
int CConcreteB::GetResult()</br>
{</br>
return 2;</br>
}</br>
4、客户端代码实现main.cpp</br>
CConcreteA a;</br>
CConcreteB b;</br>
cout<<"a result:"<<a.GetResult()<<endl;</br>
cout<<"b result:"<<b.GetResult()<<endl;</br>
<br>
此模式比较简单,在实际应用中可能会发挥不错的效果。暂时还未在项目中发现类似的使用。呵呵~</br>
以上,仅供参考。</br>
适用范围:定义一个操作的骨架算法,而将一些步骤延迟到子类中,模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。</br>
实例:如考试试题,试题可以作为抽象的模板类,而每一个学生的答案即为一个子类。</br>
模板方法模式的结构图如下所示:</br>
C++关键代码如下:</br>
1、父类关键代码如下:IAbstract.h</br>
virtual int GetResutl() = 0;</br>
2、子类A的实现:CConcreteA.cpp</br>
int CConcreteA::GetResult()</br>
{</br>
return 1;</br>
}</br>
3、子类B的实现:CConcreteB.cpp</br>
int CConcreteB::GetResult()</br>
{</br>
return 2;</br>
}</br>
4、客户端代码实现main.cpp</br>
CConcreteA a;</br>
CConcreteB b;</br>
cout<<"a result:"<<a.GetResult()<<endl;</br>
cout<<"b result:"<<b.GetResult()<<endl;</br>
<br>
此模式比较简单,在实际应用中可能会发挥不错的效果。暂时还未在项目中发现类似的使用。呵呵~</br>
以上,仅供参考。</br>
相关文章推荐
- 23设计模式之模板方法(TemplateMethod)
- "围观"设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)
- 面向对象设计模式之TemplateMethod模板方法(行为型)
- 设计模式之模板方法模式(TemplateMethod)
- C++设计模式之模板方法模式(TemplateMethod)
- 设计模式-模板方法模式(templateMethod pattern)
- 设计模式——模板方法模式(TemplateMethod Pattern)
- 设计模式学习之模板方法模式(TemplateMethod,行为型模式)(9)
- 设计模式——模板方法模式(TemplateMethod Pattern)
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- 我读设计模式之模板方法模式(TemplateMethod Pattern)
- 23设计模式之模板方法(TemplateMethod)
- 浅谈JAVA设计模式之——模板方法(TemplateMethod)
- 设计模式之模板方法模式(TemplateMethod)
- 设计模式——模板方法模式(TemplateMethod)
- C++设计模式-TemplateMethod模板方法模式
- 设计模式 模板方法模式 TemplateMethod
- 设计模式9 - 模板方法模式【Template Method Pattern】
- 《您的设计模式》(CBF4LIFE)之“模板方法模式”【整理】
- 设计模式之模板方法模式