用户中心

资讯 > 人机界面

MVC 构架在人机界面中的应用

2006.02.11阅读 2177

    电力系统设计中,一个系统工程通常采用C/S方式控制工程网版权所有,一般使用瘦客户端,Com或者DCOM 服务以及相应的数据库,而在客户端少有固定方法,而MVC(Model/View/Controller)是一种比较通用的设计模式,它很好的实现了数据层与表示层、表示层与控制层的分离,所谓的MVC 指用类的模型/视图/控制器三元组来构建用户界面。

    MVC 包括三类对象,模型Model是应用对象,视图View 是它在屏幕上的表示,控制器Controller定义用户界面对用户输入的响应方式,VC 中使用的MFC 类库主要采用了这种模型,即文档/视图/框架。一般用户界面往往将这些对象混在一起,而MVC则将他们分离以提高灵活性和复用性。 或许你经常使用VC的单文档(SDI)和多文档(MDI)设计程序,而更深入了解这种模型,会更有利于开发。把显示的数据存放于文档而不是全局对象。而在java、C#这种纯面向对象语言中MVC 模式早已深入人心。

    视图必须保证它的显示正确地反映了文档的状态。一旦文档的数据发生

变化,文档将通知相关的视图CONTROL ENGINEERING China版权所有,每个视图相应的得到刷新自己的机会。这种方法可以让你针对一个文挡提供不同的视图表现方式,也能够创建新视图而不用重写文档。除了这种单文档多视图方式,还有多文档多视图方式,即程序中可以有多个文档,每个文档可以有多个视图。典型的程序比如:Word ,一个文档可以有普通视图、Web 版式视图、页面视图、大纲视图多种试图。而且Word 中可以打开修改多个不同文档。

    MVC 的特征使得一个对象改变可以影响另一些对象CONTROL ENGINEERING China版权所有,而这个对象并不知道那些被影响的对象的细节www.cechina.cn,减少了对象之间的耦合,这种设计通常被描述成Observe模式。另一个特征是可以嵌套,用户界面可以由嵌套的视图构成,即Composite 模式。MVC还可以在不改变视图外观情况下改变视图对用户输入的响应方式。View 使用Controller 子类的实例来实现一个特定的响应策略。View-Controller 是Strategy 模式的一个例子。

    当然MVC 还使用了其他的设计模式,如:用来指定视图缺省控制器的Factory Method 、实现滚动视图的Decorator 模式,单文档的Singleton等等。但主要关系还是由Observe、Composite 和 Strategy 三个设计模式给出的。下面简单介绍一下这三种模式,由于c++ 不是一种纯面向对象语言,这里使用了微软的 Managed C++。

    1. OBSERVER(观察者)
    意图:定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。

    这样解决了目标和观察者之间的抽象耦合。一个目标(或者说文档)所知道的仅仅是它有一系列的观察者(视图),每个符合Observe 类的简单接口,即有用于自己更新的Updata()函数。目标不需要知道观察者属于那个具体的类。

    支持广播通信,目标发送信息不需要知道他的接收者。通知被自动广播给所有的登记对象

    意外的更新www.cechina.cn,一个观察者不需要知道其他观察者的存在,可以更新所有依赖于目标的观察者。

    目标mengDoc(文档) 实现了 Attach 添加 View 和 Detach 删除,以及消息通知UpdateAllViews(),并有保持状态信息的成员isModified,观察者 mengView (视图)实现了Update()函数,能够修改目标对象,使其他观察者同时更新。

    2. COMPOSITE(组合)
    意图:将对象组合成树型结构,以表示部分-整体的结构。Composite 使得用户对单个对象和组合对象使用具有一致性

    很多开发工具基本都提供了窗体如VB、Delphi、QT等,这些窗体都能够组合其他控件或者窗体本身,所有没有基于操作系统实现这个模型。而是直接从.Net 库的Form派生出来。

    3. Strategy(策略)
    意图:定义一系列算法,把他们封装起来,并且使它们可以互相替换。本模式使得算法可独立于使用它的客户(视图)而变化。

   






版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688