Jewelz`s Home Page

iOS工程师一枚,热爱前端技术

0%

被误解的MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面…

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

三层架构

通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

总是被误解

起初老师总说三层MVC,MVC三层架构……
MVC是三个字母,三层架构也是“三”,所有我们就很自然的将MVC里的三个核心部件与三层架构等同起来:三层就是MVC,MVC就是三层架构。很多人认为界面层等于View,业务逻辑层等于Controller,数据访问层等于Model,其实这是完全错误的。
MVC主要用于三层架构的表现层,是一种复合设计模式,主要是为了解决应用程序用户界面与业务逻辑数据的耦合问题。而三层架构是从整个应用程序架构的角度来划分的。虽然表现不一样,但它们的目的都是一样:分层,解耦。

MVC里的Controller是负责对页面进行控制的,比如:页面间跳转,显示逻辑等。三层架构里的业务逻辑层主要是对业务实体数据的加工,把加工后的数据传给页面显示。 MVC里的Model只是数据实体,是数据的容器,不具备什么增删改查的功能,它接收的数据是从业务逻辑层处理好传过来的数据。而三层架构里的数据访问层是具有增删改查功能的,是直接对数据库操作的,为业务逻辑层提供数据支持。
如果非要让它们有所对应的话,那么三层架构中的界面层就相当于MVC中的V(View)和C(Controller)了,业务逻辑层和数据访问层就对应MVC中的M(Model)。其实从本质上来讲,它们还是不同纬度上的东西。