模板模式是行为模式的一种,基类中封装了通用的逻辑流程,子类中实现具体的细节,用于通用逻辑已经确定的场合,缺点就是基类无法独立变化,一旦修改很容易引起逻辑错误。
下面给出UML类图和C++代码示例:
#ifndef __TEMPLATE_H__
#define __TEMPLATE_H__
class ITemplate
{
public:
ITemplate() {}
virtual ~ITemplate() {}
public:
virtual void Test() = 0;
};
class CTemplate : public ITemplate
{
public:
CTemplate() {}
virtual ~CTemplate() {}
public:
virtual void Test() {TestStep1(); TestStep2();}
protected:
virtual void TestStep1() = 0;
virtual void TestStep2() = 0;
};
class CTemplateA : public CTemplate
{
public:
CTemplateA() {}
~CTemplateA() {}
protected:
virtual void TestStep1() {printf("CTemplateA::TestStep1()\n");}
virtual void TestStep2() {printf("CTemplateA::TestStep2()\n");}
};
class CTemplateB : public CTemplate
{
public:
CTemplateB() {}
~CTemplateB() {}
protected:
virtual void TestStep1() {printf("CTemplateB::TestStep1()\n");}
virtual void TestStep2() {printf("CTemplateB::TestStep2()\n");}
};
#endif // __TEMPLATE_H__#include "stdafx.h"
#include "Template.h"
int _tmain(int argc, _TCHAR* argv[])
{
ITemplate* pTemA = new CTemplateA;
pTemA->Test();
ITemplate* pTemB = new CTemplateB;
pTemB->Test();
delete pTemA;
delete pTemB;
getchar();
return 0;
}