MVC 结构
MVC 是 "Model-View-Controller" 的缩写,即 ” 模式 - 视图 - 控制器 " 。 MVC 结构强制将一个 应用分为模型层、视图层以及控制器。
通过三者之间的协调共同响应完毕用户的请求,即交互过程。
它们之间的协作关系如图:
上图为 mvc 模式最标准也是最常见的一种形态。从上图能够看出,模型与视图不直接打交道,而是通过控制器。即控制器全然分离了视图与模型。这是 mvc 模式的最大特点之中的一个。
在现实开发中。因为实际须要,开发设计人员一般会对标准的 mvc 模式进行一些改动。屏弃当中的某些特性,而增加新的特性。当中最常见的变化形式例如以下图所看到的:
能够看到,控制器并没有全然分离视图与模型。即它不再负责依据模型改动视图,这一过程是让模型与视图两方“面对面”直接进行。这样做尽管增强了视图与模型之间的耦合,可是减轻了控制器的负担。
另外,在通常情况下。为了进一步解耦合,层与层之间的数据通过一种叫做 DTO 即传输数据对象的介质进行传递。 DTO 的时间通常非常easy,仅仅有若干属性和属性相应的 get/set 方法,是一个标准的纯 java 对象,即 pojo 。比如基于 mvc 结构的 struts 中的 actionFrom 即为一个 DTO 。
视图
视图层的作用主要有两个:
l 接收用户输入,将输入信息传递给控制层。
l 负责展示数据,它将模型层中的详细数据以一定的形式展示给用户。
模型和视图之间是一个多对多的关系。一个模型能够相应多个视图,一个视图也能够关联多个模型。
控制器
控制层接收到视图层传递过来的请求后,分析请求信息。依据请求内容选择对应的模型,并改动模型的详细数值。
同一时候当模型发生变化的时候,将会通知控制器。以更新视图。
模型
模型是行为与状态的双重抽象,即封装了数据与方法。
当模型发生变化时,对应的视图会依据新的模型数据又一次绘制展现内容。
长处
使用 mvc 结构的应用有例如以下有点:
l 便于分工。 Mvc 机构将程序分为 ’M - V - C’ 三层,这三层各司其职。
这样便于分工协作。比如,传统结构的应用将业务逻辑和界面显示混杂在一起,这样美工非常难对页面进行美化。而 mvc 结构的应用,将应用分层,视图层仅仅有展现代码便于美工美化页面。
l 提高了代码的可重用性。多个视图能共享一个模型。多个模型也能共享一个视图,提高了代码的可重用性。
l 便于维护更新。因为 mvc 的解耦合特性。
使得维护和变更相对变得比較easy。
因此能够方便地改变应用程序的业务数据和业务规则。迁移数据库等等。 不会牵一发而动全身。