在C/S阶段的时候,我们接触和深入学习过三层架构,再次我就不再对三层架构进行概述了.MVC一种混合模式,它不是一个新的内容,在三层架构和设计模式学习的时候我们都有接触过,那个时候仅限于知道的阶段. , a, {/ C1 J* A! t% R& [
一.MVC概述 M(模型,model):表示系统的业务逻辑,包括数据和业务上的规则,操作,在MVC模式中,模型是要实现系统的核心功能,为视图提供数据,供其他部件调用,对系统的功能起到封装的作用,以提高程序代码的可复用程度. V(视图,view):是系统的外观表现,是系统与用户交互的界面.在视图中不进行业务处理,只是简单的显示和向模型或控制器提交数据,发送处理请求,在得到处理结果后显示出来,这样就将显示与处理这两种类型的功能区别开来,使程序代码具有良好的层次性和可复用性. C(控制器,Controller):提供对系统处理过程的控制,对用户的输入做出响应,创建并设置模型中的属性,对输入的数据做出校验,更加客户端提出的请求,选择合适的模型来处理业务逻辑,再将数据返回给视图.可见,控制器就相当于一个调度中心和数据处理的中转站.
8 g, @! o8 a1 x. v 二.MVC基本设计思想
6 i! m3 S5 f+ e" R" G
+ B! Q: a* n5 g$ Q8 f3 I2 t MVC模式在实现时把"做什么(业务处理)"和"怎么做(业务实体)"进行了分离,使得开发人员的分工可以更细,业务逻辑可以重用.视图则在一般情况下只接受来自于模型的数据并显示给用户,以及将用户输入的数据提交给模型或者控制器, 1 N4 i7 c/ }% v6 g
三.MVC的好处' {9 f* G1 [2 g
& T$ h# }. C. s% `1.低耦合性 视图和模型的分离,实现了数据显示处理和业务处理逻辑的分别实现,相互之间影响程度较低,改变业务的处理的逻辑可以不变更数据显示的逻辑,数据表现的不同形式也不会影响到业务逻辑的处理. ) i4 |) o, v+ S; V+ m1 x. a
2.高复用性 比如不同表现的客户端可以共用业务处理逻辑代码,一个web应用系统的核心功能用组件完成之后,表现的客户端可以用无限浏览器,也可以用web浏览器.这样不局限与客户端的显示.而核心功能部件是一样的. # I! m) m9 \& W
+ ?6 z" v) Z2 ^: r四.MVC和三层的区别8 r; x5 g. E0 }
+ O6 r ^+ f+ k+ S
1.两者不是一个概念 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。我们不单单要说三层架构和MVC模式的区别,我们来看看架构和模式的区别,那就从我们接手一个项目开始: 首先,我们需要进行架构设计,一般我们采用的就是分层式的架构设计,即我们的三层架构。 然后,在确定了架构以后,我们再根据项目的具体需求去考虑是否需要应用一些设计模式,比如是否应用我们的MVC模式,抽象工厂模式等等。 最后,确定了模式以后,就是我们的一些具体的实现了。 使用架构和模式的目的都是:解耦.但是使用模式是为了让项目变得更加的灵活,写最少的代码,做的做多的事情. ; U# t8 I( o% _6 ^# s
$ i. ~% l, [: p7 J1 P/ a' x: y
2.划分层次不同 三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL),是基于业务逻辑来划分的. MVC即Model(模型),View(视图),Controller(控制),是基于页面来划分的. 他们之间的关系如下: 4 R4 h& m9 b" X# x' G
, s4 z: F' B6 Y1 S& M
' Z& B2 J" @7 k3.侧重点不同
* U1 V, i' U) m8 C# s 三层架构的目的着重点是“高内聚,低耦合”,即解耦。MVC的目的则是实现Web系统的职能分工,即职责划分。其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
8 W( k+ \% A1 w& V. G五.混为一谈的原因 1.二者都是"三层"
; O9 a# w0 r( L$ g O X b
2.MVC总是伴随着三层架构 + u z. }0 |+ E& Y$ b# |
3.都是在分层,即都是在解耦 - A9 O) E0 N! J0 d3 `& C! T- g
$ ?* Z7 V" {' d6 ^: Y& G7 S6 X& J
六.总结 不管学习三层还是学习MVC模式,我们需要学习的时候它的思想:解耦---高内聚低耦合.学习的时候,学会怎么用固然重要,但是把知识结合起来,学习其中的思想和精髓才是最重要的.无论什么东西,都是由理论来支撑和引导的.其中国的经济也不例外. |