我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > MVC和三层架构有什么区别
总共48087条微博

动态微博

查看: 1834|回复: 0

MVC和三层架构有什么区别

[复制链接]

114

主题

29

听众

429

金钱

传功长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-08-05 21:42:03 |只看该作者 |倒序浏览

在C/S阶段的时候,我们接触和深入学习过三层架构,再次我就不再对三层架构进行概述了.MVC一种混合模式,它不是一个新的内容,在三层架构和设计模式学习的时候我们都有接触过,那个时候仅限于知道的阶段.

+ G. p% J0 \3 k

一.MVC概述

     M(模型,model):表示系统的业务逻辑,包括数据和业务上的规则,操作,在MVC模式中,模型是要实现系统的核心功能,为视图提供数据,供其他部件调用,对系统的功能起到封装的作用,以提高程序代码的可复用程度.

     V(视图,view):是系统的外观表现,是系统与用户交互的界面.在视图中不进行业务处理,只是简单的显示和向模型或控制器提交数据,发送处理请求,在得到处理结果后显示出来,这样就将显示与处理这两种类型的功能区别开来,使程序代码具有良好的层次性和可复用性.

     C(控制器,Controller):提供对系统处理过程的控制,对用户的输入做出响应,创建并设置模型中的属性,对输入的数据做出校验,更加客户端提出的请求,选择合适的模型来处理业务逻辑,再将数据返回给视图.可见,控制器就相当于一个调度中心和数据处理的中转站.

/ B7 l8 t8 _, H

.MVC基本设计思想

$ V$ u9 C$ a0 E( a  l


( ^2 R$ C* y0 q& C

     MVC模式在实现时把"做什么(业务处理)"和"怎么做(业务实体)"进行了分离,使得开发人员的分工可以更细,业务逻辑可以重用.视图则在一般情况下只接受来自于模型的数据并显示给用户,以及将用户输入的数据提交给模型或者控制器,


* T; R) q0 h3 `  p$ A# s, m.MVC的好处0 t0 L: v" M: e
# F, b- g3 i: q( T/ t5 V0 @
1.低耦合性

     视图和模型的分离,实现了数据显示处理和业务处理逻辑的分别实现,相互之间影响程度较低,改变业务的处理的逻辑可以不变更数据显示的逻辑,数据表现的不同形式也不会影响到业务逻辑的处理.


0 U7 f; s6 L. J5 W

2.高复用性

     比如不同表现的客户端可以共用业务处理逻辑代码,一个web应用系统的核心功能用组件完成之后,表现的客户端可以用无限浏览器,也可以用web浏览器.这样不局限与客户端的显示.而核心功能部件是一样的.

/ q  I8 P  I6 M+ F. F) w# c

" @* A* Q: `% p) U  V4 [4 q, x
.MVC和三层的区别7 C% I: R3 a- L. e, y

& z) J% V+ r5 K  K) G1.两者不是一个概念

     三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。我们不单单要说三层架构和MVC模式的区别,我们来看看架构和模式的区别,那就从我们接手一个项目开始:

     首先,我们需要进行架构设计,一般我们采用的就是分层式的架构设计,即我们的三层架构。

     然后,在确定了架构以后,我们再根据项目的具体需求去考虑是否需要应用一些设计模式,比如是否应用我们的MVC模式,抽象工厂模式等等。

     最后,确定了模式以后,就是我们的一些具体的实现了。

     使用架构和模式的目的都是:解耦.但是使用模式是为了让项目变得更加的灵活,写最少的代码,做的做多的事情.


7 T5 p0 b9 {( h' W& D$ s, k; M, u


  L4 H8 z- a* e& `% B4 I2.划分层次不同

     三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL),是基于业务逻辑来划分的.

     MVC即Model(模型),View(视图),Controller(控制),是基于页面来划分的.

他们之间的关系如下:


8 r6 W) w: g' ~+ X . }, u  `! ]) q  k1 X& Q  n8 [6 w
- W& i$ C+ m" J* \) t
3.侧重点不同' J) J  P' Q; U  B7 X3 o+ y  M4 U

     三层架构的目的着重点是“高内聚,低耦合”,即解耦。MVC的目的则是实现Web系统的职能分工,即职责划分。其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。

3 t$ U  _5 G; W/ [6 Y& Y3 n# l7 n
.混为一谈的原因

     1.二者都是"三层"


- W% E7 g% N, b( V5 {

     2.MVC总是伴随着三层架构


: ^( r5 j) U, I) G, @

     3.都是在分层,即都是在解耦

3 [! }( ~# B  N( n6 b3 e

" H2 I4 \' B$ ?1 {.总结

     不管学习三层还是学习MVC模式,我们需要学习的时候它的思想:解耦---高内聚低耦合.学习的时候,学会怎么用固然重要,但是把知识结合起来,学习其中的思想和精髓才是最重要的.无论什么东西,都是由理论来支撑和引导的.其中国的经济也不例外.


科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表