大B:“我给你举个例子,你就可以更好在理解模板方法模式了。”
小A:“好。”
大B:“一个支持在屏幕上绘图的类View。一个视图只有在进入焦点状态后时才可以设定合适的特定绘图状态,因而只有成为‘焦点’之后才可以进行绘图。View类强制其子类遵循这个规则。我们用Display模板方法来解决这个问题。View定义两个具体方法,SetFocus和ResetFocus,分别设定和清除绘图状态。View的Dodisplay钩子操作实施真正的绘图功能。”
include《iostream.h》
classView
{
public:
voidDisplay()
{
//cout《“模版方法定义算法框架”《endl;
SetFocus();
Dodisplay();
ResetFocus();
}
voidSetFocus()
{
cout《“获得焦点”《endl;
}
voidResetFocus()
{
cout《“失去焦点”《endl;
}
virtualvoidDodisplay()
{
cout《“基类绘图函数”《endl;
}
};
classFlashView:publicView
{
public:
voidDodisplay()
{
cout《“实现falsh绘图”《endl;
}
};
classPhotoShopView:publicView
{
public:
voidDodisplay()
{
cout《“实现photoshop绘图”《endl;
}
};
intmain()
{
View*pview=newFlashView;
pview->Display();
pview=newPhotoShopView;
pview->Display();
return1;
}
运行结果:
获得焦点
实现falsh绘图
失去焦点
获得焦点
实现photoshop绘图
失去焦点