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;
}
相關文章
相關標籤/搜索