博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TemplateMethod模式
阅读量:6085 次
发布时间:2019-06-20

本文共 1256 字,大约阅读时间需要 4 分钟。

hot3.png

                 父类已经提供好了算法模板,子类负责具体实现各步算法。在使用TemplateMethod模式时一定对算法的分析很透彻,不然模板定下来,一旦改变就很困难了。

                 TemplateMethod模式在Android框架中使用的很多。例如Activity对象的几个状态。

                

                    其中就定义了onCreate(),onStart()等等方法。

                   下面是类图

                  

 

代码实现

#ifndef ABSTRACTCLASS_H

#define ABSTRACTCLASS_H
 
class AbstractClass
{
public:
AbstractClass();
virtual ~AbstractClass() = 0;
void templateMethod();
protected:
virtual void method_1() = 0;
virtual void method_2() = 0;
};
 
#endif // ABSTRACTCLASS_H
 

#include "abstractclass.h"

 
AbstractClass::AbstractClass()
{
}
AbstractClass::~AbstractClass()
{
}
void AbstractClass::templateMethod()
{
method_1();
method_2();
}
 

#ifndef CONCREATECLASS_1_H

#define CONCREATECLASS_1_H
 
#include "abstractclass.h"
 
class ConcreateClass : public AbstractClass
{
public:
ConcreateClass();
~ConcreateClass(){}
protected:
void method_1();
void method_2();
};
 
#endif // CONCREATECLASS_1_H
 

#include "concreateclass.h"

 
#include 
using namespace std;
 
ConcreateClass::ConcreateClass()
{
 
}
void ConcreateClass::method_1()
{
cout << "method_1\n";
}
void ConcreateClass::method_2()
{
cout <<"method_2\n";
}
 

#include <iostream>

 
using namespace std;
#include "concreateclass.h"
 
int main()
{
AbstractClass *p = new ConcreateClass;
p->templateMethod();
delete p;
return 0;
}
 
 

 

转载于:https://my.oschina.net/u/854744/blog/418229

你可能感兴趣的文章
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>