Template模式是32种模式中最简单的一种模式,
这里重点需要关注的是钩子函数,钩子函数的处理可以将不同处理放在子类中,
基类可以一直满足要求。
// TemplateMethod.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
class IHospital
{
public:
void DoService()
{
Guahao();
Menzhen();
Huajia();
if (IsEnoughMoney())
{
Fufei();
Quyao();
}
}
virtual void Guahao()
{
printf("Guahao()\n");
}
virtual void Menzhen()
{
printf("Menzhen()\n");
}
virtual void Huajia(){printf("Huajia()\n");}
virtual void Fufei(){printf("Fufei()\n");}
virtual void Quyao(){printf("Quyao()\n");}
virtual bool IsEnoughMoney() = 0;
};
class Hospital : public IHospital
{
public:
virtual void Menzhen(){printf("Hospital Menzhen()\n");}
virtual void Quyao(){printf("Hospital Quyao()\n");}
virtual bool IsEnoughMoney()
{
return true;
}
};
class HospitalWithoutHeart : public IHospital
{
public:
virtual void Menzhen(){printf("HospitalWithoutHeart Menzhen()\n");}
virtual void Quyao(){printf("HospitalWithoutHeart Quyao()\n");}
virtual bool IsEnoughMoney()
{
return false;
}
};
int main(int argc, char* argv[])
{
Hospital A;
printf("Human Hospital Doservice: \n");
A.DoService();
printf("\n\nBad Hospital Doservice: \n");
HospitalWithoutHeart B;
B.DoService();
printf("????\n");
printf("Hello World!\n");
return 0;
}