大话设计模式
字体: 16 + -

第159章

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

失去焦点