MVC模式理解.doc_第1页
MVC模式理解.doc_第2页
MVC模式理解.doc_第3页
MVC模式理解.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。MVC模式理解当年给我一个browser多好以前一直无法舒坦的理解,MVC模式是怎样实际应用到一个程序上的。这两天因为工作google出一幅图,然后恍然大悟。图1.问题就出在以前所看过的文章上根本没有提过browser这层。导致我无法正确理解view的责任、controller的责任,以及两者明明是分层的,为什么却是循环依赖。我将browser介入其中,重新思考MVC模式究竟如何部署到程序结构上。图2.计算机前的用户,只会和browser打交道,也就是整个应用程序的界面部署,各种窗口,包括菜单、按钮、子对话框等等。我把整个界面部署的代码,全部放置到browser模块下。此时无需model、view、controller,仅有browser的代码,我们就可以给用户显示这个界面。接下来我引入model模块,这个模块的代码和窗口无关、和控件无关、和HWND无关。就是一个后台运行的东西,不需要面向任何用户。model包含了业务的本质数据结构和逻辑流程。然后我引入view模块,view模块代码的责任就是,如何利用browser显示model的内容。这个责任有两个潜在意义:1.browser模块的代码不会去访问model模块的内容,并显示在browser相应的窗口上。2.在没有controller的情况下用户不能操作程序界面上的任何菜单、按钮,只能看不能摸,view模块能够在browser上给用户显示model的内容。因此,view模块在MVC模式中所能做的就是:1.访问model模块,获取内容。2.访问browser模块,修改窗口。最后引入controller模块。用户在计算机前看着browser,浏览业务数据,他肯定会做一些操作,比如按下按钮,选个菜单或者其他什么的。用户修改model模块的每一个决定性操作,就映射在controller模块的一个接口上。controller模块的责任是,代表用户的每一个动作,并分解为多个view做什么,model做什么的调用。这个动作必须有操作model或者view的代码,不然这个动作放在browser模块下就可以了。现在合起来分析个例子,用户通过browser向model添加一个任务。按下确定按钮后,browser读取其他子窗口的输入数据,当做参数传递给controller模块对应的调用。lcontroller模块不会主动的从browser中的控件中读取数据。如果用户的动作足够简单,controller有可能就仅仅作为一个中间层调用model模块。controller模块将用户的动作分解为一些更细致的调用:1.让model添加新任务。(不关心model怎么做)2.从model中获取新任务的信息。3.将新任务的信息传递给view,让他在browser显示出来。(不关心view怎么做)从controller的动作分解中可以看出:l和之前view直接访问model获取数据不一样,这里controller从model获取数据,并交给view。仅由controller访问model是有好处的,使得view和model没有了耦合。l这里有一个微妙的循环依赖关系,browser依赖于controller,controller依赖于view,view又依赖于browser。l解开这一依赖的方法1,提取一个view interface,让controller依赖于他,而不是依赖于view。提取controller interface也是同理。l方法2,controller不依赖于view,让view自己负责根据model的状态改变显示,即controller负责修改model,view负责读取model。l不过,view和model之间通过controller传递数据是有好处的,除了耦合之外,另一个关键的地方是,可以在controller中过滤数据,而不用修改model。l这两个方法没有最好,只有根据具体的情况选择最合适的做法。在程序足够小的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论