在C/S阶段的时候,我们接触和深入学习过三层架构,再次我就不再对三层架构进行概述了.MVC一种混合模式,它不是一个新的内容,在三层架构和设计模式学习的时候我们都有接触过,那个时候仅限于知道的阶段. : y' ^0 F: v, e0 O
一.MVC概述 M(模型,model):表示系统的业务逻辑,包括数据和业务上的规则,操作,在MVC模式中,模型是要实现系统的核心功能,为视图提供数据,供其他部件调用,对系统的功能起到封装的作用,以提高程序代码的可复用程度. V(视图,view):是系统的外观表现,是系统与用户交互的界面.在视图中不进行业务处理,只是简单的显示和向模型或控制器提交数据,发送处理请求,在得到处理结果后显示出来,这样就将显示与处理这两种类型的功能区别开来,使程序代码具有良好的层次性和可复用性. C(控制器,Controller):提供对系统处理过程的控制,对用户的输入做出响应,创建并设置模型中的属性,对输入的数据做出校验,更加客户端提出的请求,选择合适的模型来处理业务逻辑,再将数据返回给视图.可见,控制器就相当于一个调度中心和数据处理的中转站.
6 G9 k/ `; T+ K- G7 ]1 e% M% W 二.MVC基本设计思想
. C1 r( K1 a5 N, i' C3 H" V7 g) H
, ]" M. L5 u0 b1 A* D; F3 M+ g MVC模式在实现时把"做什么(业务处理)"和"怎么做(业务实体)"进行了分离,使得开发人员的分工可以更细,业务逻辑可以重用.视图则在一般情况下只接受来自于模型的数据并显示给用户,以及将用户输入的数据提交给模型或者控制器, & N( v0 c9 |; J( N( g8 O
三.MVC的好处4 `# a) t8 S& |- L
& R. m1 @& e! Z* N, d
1.低耦合性 视图和模型的分离,实现了数据显示处理和业务处理逻辑的分别实现,相互之间影响程度较低,改变业务的处理的逻辑可以不变更数据显示的逻辑,数据表现的不同形式也不会影响到业务逻辑的处理.
5 E! g3 f U4 p9 v 2.高复用性 比如不同表现的客户端可以共用业务处理逻辑代码,一个web应用系统的核心功能用组件完成之后,表现的客户端可以用无限浏览器,也可以用web浏览器.这样不局限与客户端的显示.而核心功能部件是一样的.
* P2 G3 e* z2 n' P! [, d4 _$ m& `
" m) w( A$ X3 c& ~; g, y" m* z四.MVC和三层的区别1 r' {4 e, A L8 q
# D9 Y( D! C6 o9 D c$ V1.两者不是一个概念 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。我们不单单要说三层架构和MVC模式的区别,我们来看看架构和模式的区别,那就从我们接手一个项目开始: 首先,我们需要进行架构设计,一般我们采用的就是分层式的架构设计,即我们的三层架构。 然后,在确定了架构以后,我们再根据项目的具体需求去考虑是否需要应用一些设计模式,比如是否应用我们的MVC模式,抽象工厂模式等等。 最后,确定了模式以后,就是我们的一些具体的实现了。 使用架构和模式的目的都是:解耦.但是使用模式是为了让项目变得更加的灵活,写最少的代码,做的做多的事情.
5 u y- u9 N3 t4 @
$ G& k; G# j, o' n) I( e2.划分层次不同 三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL),是基于业务逻辑来划分的. MVC即Model(模型),View(视图),Controller(控制),是基于页面来划分的. 他们之间的关系如下: ; Q5 P% w! x# F5 j' X( S
4 x* F+ R- `! M( z+ M# Q* d8 |
, K4 U( x$ H1 t t9 r* s. K3.侧重点不同
1 M$ L8 q- B% h" k ^, m9 j5 V 三层架构的目的着重点是“高内聚,低耦合”,即解耦。MVC的目的则是实现Web系统的职能分工,即职责划分。其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
( `3 b9 Y$ }) Z& S, T8 j' G+ Q五.混为一谈的原因 1.二者都是"三层"
& U' l3 y0 P; A6 O2 w
2.MVC总是伴随着三层架构 / X+ D' {# _0 Z& T; j
3.都是在分层,即都是在解耦
6 x1 @- h2 o. ]3 V5 i0 q+ h2 A: e6 ~8 {) l, B! i) a, ?/ v8 c
六.总结 不管学习三层还是学习MVC模式,我们需要学习的时候它的思想:解耦---高内聚低耦合.学习的时候,学会怎么用固然重要,但是把知识结合起来,学习其中的思想和精髓才是最重要的.无论什么东西,都是由理论来支撑和引导的.其中国的经济也不例外. |