1. 概述
定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
2. 模式中的角色
2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。
3 类图:
4 代码实例:
#include"stdafx.h"
#include<iostream>
using namespace std;
class AbstractClass
{
public:
virtual void PrmOne1() = 0;
virtual void PrmOne2() =0;
void TemplateMethod()
{
PrmOne1();
PrmOne2();
cout<<"Abstract class Done the method"<<endl;
}
};
class ConcreteClassA:public AbstractClass
{
public:
void PrmOne1()
{
cout<<"Concrete A one1"<<endl;
}
void PrmOne2()
{
cout<<"Concrete A one2"<<endl;
}
};
class ConcreteClassB:public AbstractClass
{
public:
void PrmOne1()
{
cout<<"Concrete B one1"<<endl;
}
void PrmOne2()
{
cout<<"Concrete B one2"<<endl;
}
};
//
#include "stdafx.h"
#include"Template.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
AbstractClass *p1 = new ConcreteClassA();
p1->TemplateMethod();
p1= new ConcreteClassB();
p1->TemplateMethod();
system("pause");
return 0;
}