MVC与三层架构的区别

咱们平时老是将三层架构与MVC混为一谈,却不知它俩并非一个概念。下面我来为你们揭晓我所知道的一些真相。web

首先,它俩根本不是一个概念。

  三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。设计模式

  MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。架构

  那么架构跟设计模式有什么区别呢?jsp

  咱们从接手一个项目开始,首先,咱们须要进行架构设计,通常咱们采用的就是分层式的架构设计,即咱们的三层架构。spa

  而后,在肯定了架构之后,咱们再根据项目的具体需求去考虑是否须要应用一些设计模式,好比是否应用咱们的MVC模式,抽象工厂模式等等。(在这里咱们看出,MVC与三层架构不是一个等级的,而与抽象工厂等设计模式才是一路的)架构设计

  最后,肯定了模式之后,就是咱们的一些具体的实现了。(固然一个项目不只仅考虑这些问题,我只是为了说明二者的区别,将其余问题已省略)设计

其次,它俩划分的层次不一样。

  三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。基础

  MVC 即Model(模型),View(视图),Controller(控制)。软件

  下面看一下他俩的区别与联系:im

  经过这个图咱们能够知道,咱们日常所说的V是UI,C是BLL,M是DAL的观点是错误的。

  而咱们一般所见到的MVC通常也都是在应用三层架构的基础上,即将Model层再进行分层。而若是Model再也不进行划分的话,那么使用MVC的意义也就不大了。

而后,它俩的目的着重点不一样。

  三层架构的目的着重点是“高内聚,低耦合”,即解耦。

  MVC的目的则是实现Web系统的职能分工,即职责划分。

  其实职责划分也是解耦,可是三层侧重的是总体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。

最后,为什么咱们会将其混为一谈?

  既然二者有这么多的不一样,咱们为何还老是将其混淆呢,下面我列举了几个咱们经常将其混为一谈的几个缘由:

  1.两者都是“三层”。

  这个缘由是最容易迷惑咱们初学者的,一个是UI,BLL,DAL,一个是View,Controller,Model,不都是三层吗?

  虽然都是“三层”(不必定是真的三层,还能够是多层),可是它们的划分的不同。你们可从上面的图中看出不一样。

  2.MVC老是伴随着三层架构。

  这个就是我在前面一再强调的,咱们通常是在考虑使用(也能够不使用)了三层架构的基础上再根据具体需求决定是否须要使用MVC,因而咱们常说的MVC中老是伴随着三层架构,因此你们老是会认为MVC就是三层架构,三层架构就是MVC,却不知,它们两者是一块儿出现的。

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

  前面说它们目的的时候也说了,虽然它们的侧重点不一样,可是它们的整体目的是同样的,都是为了解耦,对于初学者而言,是不知道这两个侧重点有何不一样的。

  你们每每对它们的联系知道不少,否则也不会混为一谈,可是对它们的区别却知道较少,但愿我上面讲解的它们二者之间的区别可让你们对它们有些了解,若有写的不妥的地方,请指教。

相关文章
相关标签/搜索