书城计算机网络大话设计模式
8183300000159

第159章 11 支持在屏幕上绘图的类。

大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绘图

失去焦点