【设计模式】模板方法
来源:互联网 发布:淘宝客户关系管理导出 编辑:程序博客网 时间:2024/05/16 10:51
Template方法模式,与c++的模板没有直接关系。或者可以认为这里的template是针对方法(函数)来说的,而c++的template则是针对成员变量或者参数来讲的。字面意思有一些关系。
template method主要是通过在父类中定义一个模板,子类中实现该模板中的个性化部分。实现了固定部分和变化部分的解耦。模板方法本身比较简单。其目的就是为了共享一些公共部分,提升代码复用性。
简单写了一个demo,很简单。参考了下面的blog,主要是觉得例子举得很贴切:http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/10/2584272.html
#include <iostream>using namespace std;class TestPaper{ public: TestPaper(){} ~TestPaper(){} void Question1(){ cout<<"1+1=?"<<endl; } void Question2(){ cout<<"什么是模板方法?"<<endl; } void Process(){ Question1(); DoAnswer1(); Question2(); DoAnswer2(); } protected: virtual void DoAnswer1() = 0; virtual void DoAnswer2() = 0;};class StuA : public TestPaper{ public: StuA(){} ~StuA(){} virtual void DoAnswer1(){ cout<<"StuA:"<<"2!"<<endl; } virtual void DoAnswer2(){ cout<<"StuA:模板方式是一种设计模式。与模板可不是一回事儿哦!"<<endl; }};class StuB : public TestPaper{ public: StuB(){} ~StuB(){} virtual void DoAnswer1(){ cout<<"StuB:3!"<<endl; } virtual void DoAnswer2(){ cout<<"StuB:模板方式就是父类先确定逻辑框架,把确定的流程,操作等固化到父类,将一些个性化的操作留给子类去实现。这个思想叫'好莱坞法则':别找我们,我们找你。对应到模板方法,父类调用子类的操作,而不是相反。"<<endl; }};int main(){ StuA * stuA = new StuA(); stuA->Process(); StuB * stuB = new StuB(); stuB->Process(); return 0;}
模板方法,比较简单,且很好理解。本身模板方法更像一个纯接口。而不是一个类。在C++中没有区分接口和继承,所以理解起来有点别扭。实际上模板类和其实现,可能完全没有继承关系。
另外,模板方法,也可以有一些默认操作。从而降低子类的负担。
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 【设计模式】模板方法
- 模板方法设计模式
- 设计模式--模板方法
- 模板方法设计模式
- 设计模式-模板方法
- 设计模式-模板方法
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 设计模式-模板方法
- 模板方法设计模式
- lsof 命令输出
- 黑马程序员---文件对象
- 开发几个常用的开源类库及下载地址
- ListView 的item莫名地在某些手机上面居中显示。
- 第十三周上机任务项目1-理解基类中成员的访问限定符和派生类的继承方式
- 【设计模式】模板方法
- ppt制作读书笔记(未完)
- java学习之路--基础
- 软件许可证分析
- HUE beeswax中文显示问题的解决方案
- Spring+JDBC(mysql)
- acm 2097
- imread函数
- VC++使用Crypto++库计算文件的MD5值