案例分析:
一个支持在屏幕上绘图的类View。一个视图只有在进入焦点状态后时才可以设定合适的特定绘图状态,因而只有成为“焦点”之后才可以进行绘图。View类强制其子类遵循这个规则。我们用Display模板方法来解决这个问题。View定义两个具体方法,SetFocus和ResetFocus,分别设定和清除绘图状态。 View的Dodisplay钩子操作实施真正的绘图功能。
意图:
定义一个操作中算法的框架,将一些步骤延迟到其子类中。这里就是将绘图的具体工作,延迟到View类的派生类中。
结构图:
程序代码:
#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绘图
失去焦点
Press any key to continue
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jia_xiaoxin/archive/2008/08/26/2831564.aspx |
|