基于MVC架构实例分析以校园知网校内论坛功能为例
一、 什么是MVC
MVC是Model-View-Controller ,也就是说,MVC把三层架构中的 UI 层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;框架架构设计上分层思想的体现,也是目前绝大部分框架所采用的架构设计。这个架构主要是把一个应用系统分为模型层 (Model) ,表示层 (View) 和控制层 (Controller) 。
1)视图 (View) :代表用户交互界面,对于 Web 应用来说,可以概括为 HTML 界面,但 有可能为XHTML、XML和 Applet。随着应用的复杂性和规模性,界面的处理也变得具有 挑战性。一个应用可能有很多不同的视图, MVC 设计模式对于视图的处理仅限于视图上数 据的采集以及用户的请求,不包括在视图上业务流程的处理。业务流程的处理交给模型 (Model) 处理。
2)模型 (Model) :就是业务流程的处理以及业务规则的制定。业务流程的处理过程对其 它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。对一个开发者来说,主要是专注于业务模型的设计。
3)控制器 (Controller) 可以理解为从用户接收请求,将模型与视图匹配在一起,共同完 成用户的请求。划分控制层的作用也很明显,MVC 是一个分发器,选择不同的模型,选择不同的视图,可以完成不同的用户请求。控制层并不做任何的数据处理。
例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型如何去操作,并且选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。 因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化传播机制。
二、 系统的实现
功能模块设计本系统分为三个大的模块,他们分别是会员资料模块 ,帖子资料模块和后台管理模块。
会员模块:此模块用来实现会员的登陆注册和会员资料的修改和查找。
①会员登陆模块:会员可以通过此模块对论坛进行登陆,登陆后便可以使用所有的会员功能,比如发帖回复等等。
②会员注册模块:没有会员帐号的用户,可以通过此模块添加会员信息,添加成功后便可 登陆论坛,使用会员功能。
③资料修改模块:已注册的会员在登陆后,可以通过此模块,对会员的基本资料,联系方式,密码,头像等资料进行修改。
④会员查找模块:已注册的会员在登陆后,可以通过此模块,对会员进行查找,并可以查看对方的资料,联系方式等等,从而方便会员之间的联系。
帖子模块
①帖子发表模块:已注册的会员在登陆后,可以在相应的论坛中,发表或转载自己的大作,发表成功后,其他会员便可以在相应的论坛中看到这篇帖子,并可以对其进行回复等操作。
②帖子回复模块:会员在发表完帖子后,用户便可查看相关文章,并可以在文章中对已发表的帖子进行回复。
③帖子查找模块会员可以通过此模块,根据帖子的标题和作者,对相关的帖子进行查找。
后台管理
①帖子查找模块:此模块和帖子模块中的帖子查找类似,只是管理员的搜索条件比普通用户更加的广泛,使搜索变的便捷。
②帖子管理模块:帖子管理模块是管理员对帖子管理的平台,如果管理员查看到帖子有不适宜发表的内容时,可以对帖子选择删除或者进行锁定等操作,如果看到优秀的帖子,还可以将帖子进行置顶或加精。
③会员管理模块:管理员可以通过此模块,对会员进行管理,对一些不法的用户可以修改或者删除其资料。
④论坛模块管理模块:管理员可以通过此模块,对论坛模块的添加,创建,删除等功能。
⑤图片管理模块:管理员可以管理用户上传的头像,和在文章里发表的图片 ,从而加强对图片的控制。
三、 为什么采用MVC模式
拿会员简单的登陆模块说,需求是你输入一个用户名、密码,如果输入的跟预先定义好的一样,那么就进入到正确页面,如果不一样,就提示个错误信息 “ 你丫别在这儿蒙我,输入的不对! ”。
V 这个小小的模块中,起始的输入用户名密码的页面跟经过校验后显示的页面就相当于 View 。
C 而这里还需要一个controller页面,就是用于接收输入进来的用户名密码,还有经过校验后返回的一个flg(此 flg 就是用于判断你输入的是否正确,而跳转到相应的页面的)。
M 最后还缺一个Model,那么就是你那个用于校验的类了,他就是处理你输入的是否跟预先订好的一样不一样的,之后返回一个 flg。
这样就完全实现了逻辑跟页面的分离,我页面不管你咋整,反正我就一个显示,而controller 呢也不管你Model 咋判断对不对,反正我给你了用户名跟密码,你就得给我整回来一个 flg 来,而 Medol 呢,则是反正你敢给我个用户名跟密码,我就给你整过去个 flg 。
M提供数据,数据之间的关系,转化等。并可以通知视图和控制器自己哪些地方发生了变化。
V提供显示,能根据 m 的改变来更新自己
C比如视图做了点击一个按钮,会先发给这个视图的控制器,然后这个控制器来决定做什么操作 (让模型更新数据,控制视图改变 )
MVC是一个复合模式,MV,MC都是观察者模式,M内部的组件组合模式VC之间是策略模式 (可以随时更换不同的控制器 )。
四、 结论
通过对系统的设计、调试、测试,最终完成了该校园论坛的设计。本系统在基于 B/S 模式下结合三层架构的原理,把 Ajax 局部刷新技术成功运用在系统中。实现了校园 BBS 论坛系统各项功能。使得系统具有良好的扩展性,减少了类与类之间的耦合性。同时具有很好的现实意义。