TemplateMethod模式

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

                 TemplateMethod模式在Android框架中使用的不少。例如Activity对象的几个状态。算法

                

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

                   下面是类图spa

                  

 

代码实现code

#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"it

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

#ifndef CONCREATECLASS_1_Hio

#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 <iostream>
using namespace std;
 
ConcreateClass::ConcreateClass()
{
 
}
void ConcreateClass::method_1()
{
 cout << "method_1\n";
}
void ConcreateClass::method_2()
{
 cout <<"method_2\n";
}
 

#include <iostream>class

 
using namespace std;
#include "concreateclass.h"
 
int main()
{
 AbstractClass *p = new ConcreateClass;
 p->templateMethod();
 delete p;
 return 0;
}
相关文章
相关标签/搜索