设计模式(14)-模板模式
来源:互联网 发布:书生商友推广软件 编辑:程序博客网 时间:2024/06/08 05:52
模板模式
模板模式属于行为模式,其特点是定义了一个操作中的算法架构,将其中一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
代码
此处以基于HTTP协议下载文件和基于SOAP协议下载文件的过程来说明模板模式,下载文件一般包括了开始下载、下载中、下载完成3个步骤,因此父类可以据此定义架构,而具体不同协议在不同步骤中所需要完成的内容则延迟到子类中完成。
C++代码
文件结构:
—include
——FileOperation.h
——HTTPFileOperation.h
——SOAPFileOperation.h
—src
——FileOperation.cpp
——HTTPFileOperation.cpp
——SOAPFileOperation.cpp
——main.cpp
代码如下:
—include/FileOperation.h
#ifndef _FILEOPERATION_H_#define _FILEOPERATION_H_class FileOperation{public: virtual ~FileOperation(); void DownloadFile();protected: virtual void DoBeginDownload()=0; virtual void DoDownload()=0; virtual void DoEndDownload()=0;};#endif
—include/HTTPFileOperation.h
#ifndef _HTTPFILEOPERATION_H_#define _HTTPFILEOPERATION_H_#include"FileOperation.h"class HTTPFileOperation:public FileOperation{protected: virtual void DoBeginDownload(); virtual void DoDownload(); virtual void DoEndDownload();};#endif
—src/SOAPFileOperation.h
#ifndef _SOAPFILEOPERATION_H_#define _SOAPFILEOPERATION_H_#include"FileOperation.h"class SOAPFileOperation:public FileOperation{protected: virtual void DoBeginDownload(); virtual void DoDownload(); virtual void DoEndDownload();};#endif
—src/FileOperation.cpp
#include"FileOperation.h"FileOperation::~FileOperation(){ ;}void FileOperation::DownloadFile(){ DoBeginDownload(); DoDownload(); DoEndDownload();}
—src/HTTPFileOperation.cpp
#include<iostream>#include"HTTPFileOperation.h"using namespace std;void HTTPFileOperation::DoBeginDownload(){ cout<<"基于HTTP协议开始下载文件"<<endl;}void HTTPFileOperation::DoDownload(){ cout<<"基于HTTP协议下载文件中..."<<endl;}void HTTPFileOperation::DoEndDownload(){ cout<<"基于HTTP协议下载文件完成"<<endl;}
—src/SOAPFileOperation.cpp
#include<iostream>#include"SOAPFileOperation.h"using namespace std;void SOAPFileOperation::DoBeginDownload(){ cout<<"基于SOAP协议开始下载文件"<<endl;}void SOAPFileOperation::DoDownload(){ cout<<"基于SOAP协议下载文件中..."<<endl;}void SOAPFileOperation::DoEndDownload(){ cout<<"基于SOAP协议下载文件完成"<<endl;}
—src/main.cpp
#include<iostream>#include<memory>#include"HTTPFileOperation.h"#include"SOAPFileOperation.h"using namespace std;int main(){ shared_ptr<FileOperation> httpFile = make_shared<HTTPFileOperation> (); shared_ptr<FileOperation> soapFile = make_shared<SOAPFileOperation> (); httpFile->DownloadFile(); soapFile->DownloadFile(); return 0;}
Python代码
文件结构:
—FileOperation.py
代码如下:
—FileOperation.py
# -*- coding:utf-8 -*-class FileOperation: def DownloadFile(self): self._DoBeginDownload() self._DoDownload() self._DoEndDownload() def _DoBeginDownload(self): pass def _DoDownload(self): pass def _DoEndDownload(self): passclass HTTPFileOperation(FileOperation): def _DoBeginDownload(self): print "基于HTTP协议开始下载文件" def _DoDownload(self): print "基于HTTP协议下载文件中..." def _DoEndDownload(self): print "基于HTTP协议下载文件完成"class SOAPFileOperation(FileOperation): def _DoBeginDownload(self): print "基于SOAP协议开始下载文件" def _DoDownload(self): print "基于SOAP协议下载文件中..." def _DoEndDownload(self): print "基于SOAP协议下载文件完成"if "__main__" == __name__: httpFile = HTTPFileOperation() soapFile = SOAPFileOperation() httpFile.DownloadFile() soapFile.DownloadFile()
0 0
- 设计模式(14)-模板模式
- 设计模式-模板模式
- 设计模式----模板模式
- 设计模式:模板模式
- 设计模式:模板模式
- 设计模式--模板模式
- 设计模式-模板模式
- 设计模式-模板模式
- 《设计模式》- 模板模式
- 设计模式-模板模式
- 设计模式-模板模式
- 设计模式-模板模式
- 设计模式-模板模式
- 设计模式-----模板模式
- 设计模式-模板模式
- 设计模式--模板模式
- 设计模式--模板模式
- 设计模式14-模板方法
- 《Head_First_Python》4 持久存储
- 代码解读
- MQL4关键函数学习
- MQL4内置函数--总结汇总
- EA设计零起点!点点鼠标就能…
- 设计模式(14)-模板模式
- EA 编程 问题集
- ODBC管理器相关知识汇总
- 64位系统使用Access 数据库文…
- thread_init_early
- 轻松解决Win7(8)系统共享打印机…
- java被安全阻止解决
- NC数据字典
- Excel技巧:IF{1,0}用法详解