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