MVC模式基本理解
来源:互联网 发布:zsysecdesk是什么软件 编辑:程序博客网 时间:2024/06/05 19:13
以下内容参考了《精通Java Web整合开发(JSP+Ajax+Struts+Hibernate)》和《自己动手写Struts——构建基于MVC的Web开发框架》里面的内容。
概述
MVC模式,即模型-视图-控制器(MVC,Model-View-Control)是一种交互界面的结构组织模型。
模型(Model),代表的是应用的业务逻辑,包含应用程序的核心功能,它表示企业数据和业务规则。模型封装了应用程序的状态。在MVC模式中,模型要处理的任务很多,为了能使一个模型能给多个视图提供数据,那么要让模型与数据格式无关。
视图(View),应用的视图层,提供模型的表示。它是应用程序的界面,是用户能看到并与之交互的界面。在视图层中,没有发生真正的处理。视图层只是展示由模型提供数据的一种方式,因此,视图只能访问模型的读方法,而不能访问模型的写方法。视图对控制器一无所知,当改变模型时,视图应得到通知。
控制器(Control),提供应用的处理过程控制,控制器对用户的输入做出反应,它创建并设置模型。控制器相当于一个中转站,它本身不处理和输出任何数据。控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后确定用哪个视图来显示模型处理返回的数据,从而把响应结果送回到客户端。
MVC模式的结构
用户提交的请求导致控制器改变模型或视图,或者同时改变模型或视图。一旦控制器改变了模型的数据,就会通知所有依赖的视图进行自动更新;从另一方面讲,只要控制器选择了相应的视图,视图就会从模型中获取数据来进行刷新。
MVC模式的设计思想
MVC模式的设计思想就是:把原来开发人员针对一个系统的输入、输出、处理流程编程的方式改变为按照模型层、视图层、控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了开发流程。
1、 模型层
模型就是业务流程、状态处理及业务规则的制定。模型一般有两类:业务逻辑模型和数据模型。模型接受视图请求的数据,并返回最终的处理结果。业务流程的处理过程对另外两个层(View和Control)来说是封闭的。在MVC模式中,我们要把应用模型按一定的规则抽取出来,抽取的层次是关键,这也是判断开发人员是否优秀的依据。数据模型主要指实体对象的数据保存,即持久化。数据模型实现了对视图和模型之间交互的支持。实现把“做什么(业务处理)”和“怎么做(业务实体)”分离,这样就可以实现业务逻辑的重用。业务模型的设计是MVC最主要的核心部分。
2、 视图层
视图就是客户和系统进行交互的界面,作为视图来讲,它只是展示由模型提供的数据的一种方式。它可以是一个HTML页面或者是其它的方式等等。
在MVC设计模式中,视图仅限于处理视图上数据的采集和处理,以及用户的请求,不包括视图上业务流程的处理,业务流程的处理和状态的改变交给模型层处理。
3、 控制层
控制层就像一个中转站,它接受用户请求,并根据用户请求将模型与视图匹配在一起,共同完成用户的请求。控制层不做任何的数据处理,它就是一个分发器,选择什么样的模型以及视图,就可以完成什么样的用户请求。为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。用户提交一个表单或者点击一个链接,控制层在接受请求后,它本身并不处理业务信息,而是根据用户的请求类型,把用户的信息传递给相对应的模型,告诉模型做什么,等模型处理完毕后,再把模型处理后的数据选择符合要求的视图返回给用户。这样,一个模型就可能对应多个视图,一个视图可能对应多个模型。这样的话,我们可能会在控制层进行一些简单的数据转换等操作。
模型、视图与控制器之间的分工协作关系如下:
关系图说明如下:
模块名称
分工
协作
模型M
1、抽象系统应用的功能
2、封装系统的状态
3、提供使用系统功能的方法和路径
4、管理数据的存储和一致性
5、当数据发生变化时通知相关组件
1、当系统状态改变时通知视图
2、响应视图的状态查询
3、提供对控制器的操作途径
视图V
1、抽象数据表示
2、表示针对用户的数据
3、维护与模型的数据一致性
1、显示模型的数据
2、接收模型的数据更新通知更新视图
3、接受用户输入的数据传给控制器
控制C
1、抽象用户和系统的时间的语意映射
2、把用户输入映射到系统事件
3、根据用户输入和上下文情况选择合适的显示数据
1、接收用户请求
2、调用某个模型处理用户请求
3、 将处理结果送给某个视图进行显示
总结MVC的处理过程如下:
首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型的数据,并通过视图层展示给用户。
基于MVC的Web框架
一般情况下,实现一个基于MVC的Web框架示意图如下:
- MVC模式基本理解
- MVC模式 (基本理解)
- mvc模式理解
- MVC模式理解
- mvc设计模式理解
- 如何理解MVC模式
- OFBizChina: 理解MVC模式
- 理解MVC设计模式
- MVC模式 重新理解
- 简单理解MVC模式
- MVC模式理解
- MVC模式的理解
- MVC模式的理解
- OFBizChina: 理解MVC模式
- MVC模式理解
- 快速理解MVC模式
- MVC设计模式理解
- mvc模式的理解
- 全局对象在程序进入main之前construct, 离开main后destruct
- UIWebView背景透明且无拖拽后的上下阴影
- C++中extern “C”含义深层探索
- 这是第一篇博客,作为测试
- hdu 2391 Filthy Rich
- MVC模式基本理解
- Matlab高性能编程——代码优化和并行计算
- linux内核轻量级虚拟化之Namespace
- 贴图透明特效的实现
- Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)(十二)
- dl-ssl.google.com无法打开
- MyEclipse快捷键大全
- 重写、覆盖、重载、多态几个概念的区别分析
- HDU 统计难题