3.文档视图:从gui分割状态

  为了解决一个类实现所有功能的缺陷,我们把application分为2个部分。一个部分业务逻辑,一个部分视觉渲染和交互。这2个类在学术上被称为document view 或者 model

delegate。

   Document类用来处理业务逻辑,和视觉渲染、GUI事件没有一点关系。它简单的存储应用程序的状态,提供接口获得状态并根据应用程序规则改变状态。另外,提供机制告知相关对象,应用程序状态改变。

  View类处理事件和图像渲染。提供对 Document类的操作,界面改变和 Document类中状态改变同步。

   Document View设计模式实现状态和图像显示分离,它们能单独的改变。Document类成为 non-GUI单元,能单独的工作和检测。任何View通过notification system保持和Document内容一致,并根据Document内容 负责图像呈现和用户交互。

  这种设计消除了一些对单个类实现的担忧,对状态和业务逻辑的测试变得更容易:通过调用Document类中的方法。此Document对象现在是独立的,如果需要的话,可以和不同的View工作。代价就是告知View,Document中状态改变(notification system)。

代码如下:

时间: 2024-12-22 21:01:58

3.文档视图:从gui分割状态的相关文章

文档/视图结构的应用

用Visual C++的MFC AppWizar生成的函数,一般是"文档/视图"结构的. 在这种程序结构中,文档对象和视图对象的分工是十分明确的,文档对象用来存储.管理和维护数据,而视图对象用来显示和操作数据. 所以,在文档/视图结构的应用程序中,一般要在文档类的声明中定义数据对象,在文档类的构造函数中初始化数据对象,而对数据对象的操作和显示则在视图类对象中完成. 为了在视图对象中,对文档对象的成员进行访问,视图类提供了一个成员函数GetDocument,它的原型为: CDocumen

8.MFC多文档视图构架程序

一.多文档视图构架程序 1.相关问题 可以同时管理多个文档(可以有多个文档类对象) 2.相关类 CWinApp / CDocument / CView / CMIDChildWnd / CMIDFrameWnd CDocTemplate CMultiDocTemplate - 多文档模板类 CDocManager - 文档管理类

mfc学习---文档视图架构

MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用.单文档应用(SDI)和多文档应用(MDI). 一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:       1.应用程序是一个CwinApp派生对象,它充当全部应用程序的容器.应用程序沿消息映射网络分配消息给它的所有子程序.       2.框架窗口是一CfrmeWnd派生对象.       3.文档是一个CDocument派生对象,它存储应用程序的数据,并把这些信息提供给应用程序的其余部分.       4.视

如何从一个对话框弹出单文档视图

如何从一个对话框弹出单文档视图 分类: Visual C++2006-06-01 20:02 9323人阅读 评论(19) 收藏 举报 文档initializationmfctemplatesvalidationcommand 朱金灿 相信不少人进行数据库编程都有这样的问题,如何设置一个登陆框,通过登陆框来进入单文档视图.我看到很多数据库编程方面的书,都是对话框之间的相互切换.而在对话框中添加菜单不少人都不太熟悉(当然这是可以办到的).我在想:为何不能在对话框中弹出单文档,这样添加菜单等工作就方

文档视图程序设计

文档视图程序设计 1.实验目的和要求 (1)创建一个多文档应用程序Ex_SDI,用来操作"课程信息"文档. (2)创建一个可序列化类CCourseInfo,用于"课程信息"的序列化操作. (3)建立用于类型文档的菜单系统,其基本菜单命令包括"添加"."打开"和"保存".选择"添加"菜单命令,弹出相应的信息对话框,添加后信息显示在视图中,并保存在相应的CObArray类对象.选择"

7.MFC单文档视图构架程序

一.单文档视图构架程序 1.相关问题 只能管理一个文档(只有一个文档类对象) 2.相关类 CWinApp / CFrameWnd / CView / CDocument CDocTemplate - 文档模板类 CSingleDocTemplate - 当文档模板类 CDocManager - 文档管理类 3.关系图

文档视图(DocumentView)和元素视图(ElementView)方法

文档视图(DocumentView)和元素视图(ElementView) 旗下有四个方法,如下:elementFromPoint() 返回给定坐标处所在的元素.是个在目前而言,兼容性不错的方法 getBoundingClientRect()  得到矩形元素的界线,返回的是一个对象,包含 top, left, right, 和 bottom四个属性值,大小都是相对于文档视图左上角计算而来   getClientRects() 返回元素的数个矩形区域,返回的结果是个对象列表,具有数组特性.这里的矩形

MFC 文档/视图

1.文档修改后,关闭时需要保存,主要用到2个函数,在需要更改文档内容的函数里调用SetModifiedFlag(TRUE),另一个就是SaveModified()函数,简单的例子: BOOL CMFC_Doc::SaveModified() { // TODO: 在此添加专用代码和/或调用基类 return CDocument::SaveModified(); } void CMFC_Doc::SetColor() { m_color=RGB(0,0,0); SetModifiedFlag(TR

文档/视图结构详细介绍

以单文档界面(SDI)应用程序为例,介绍MFC的文档/视图程序结构. 学习要求 理解文档/视图结构,可在AppWizard生成的SDI程序框架的基础上添加必要的代码,以生成自己的应用程序. 授课内容 大部分应用程序均要使用数据,其主要工作可以分为两部分:一是对数据的管理,如存储.复制和查询等任务,一是对数据的处理和输入输出,包括显示和打印.MFC提供了“文档/视图”结构支持这类应用程序. 12.1文档/视图概念 在文档/视图结构里,文档可视为一个应用程序的数据元素的集合,MFC通过文档类提供了大