第159章(1 / 1)

大话设计模式 吴强 465 字 2个月前

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

失去焦点