分享

模板方法模式(Template Method)案例分析 - jia

 遥远的桥zz 2011-04-08
案例分析:
一个支持在屏幕上绘图的类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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多