三层架构与MVC谜团之答案揭晓

开发 后端
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。

我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。

 

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

 

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

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

 

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

我们从接手一个项目开始,首先,我们需要进行架构设计,一般我们采用的就是分层式的架构设计,即我们的三层架构。

 

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

 

最后,确定了模式以后,就是我们的一些具体的实现了。(当然一个项目不仅仅考虑这些问题,我只是为了说明两者的区别,将其他问题已省略)

 

其次,它俩划分的层次不同。

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

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

 

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

 

通过这个图我们可以知道,我们平常所说的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.都是在分层,即都是在解耦。

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

 

大家往往对它们的联系知道很多,不然也不会混为一谈,但是对它们的区别却知道较少,希望我上面讲解的它们两者之间的区别可以让大家对它们有些了解,如有写的不妥的地方,请指教。

原文链接:http://blog.csdn.net/zhaodandan19910306/article/details/7202463

【编辑推荐】

  1. Java处理字符串搜索嵌套结构的方法
  2. 你了解JavaScript中的function吗?
  3. Java编程:常见问题汇总
  4. Java数据库连接代码集合
  5. Java Thread的概述与总结
责任编辑:林师授 来源: zhaodandan19910306博客
相关推荐

2009-04-21 11:27:52

MVCJSPJDBC

2009-07-28 15:08:50

MVC三层架构实例

2009-04-30 15:56:50

三层架构MVCMVP

2011-08-08 14:14:03

架构

2009-04-30 09:15:25

三层结构MVC架构

2011-04-19 13:53:41

三层架构

2019-07-26 08:39:29

JavaWebMVC

2018-03-08 15:30:31

超融合架构传统三层架构

2013-01-09 11:00:20

架构开发三层架构.NET架构

2009-08-26 18:20:42

三层架构

2009-07-28 17:25:14

ASP.NET三层结构

2012-02-03 09:44:33

.NET

2015-07-02 10:57:11

General框架架构开发

2018-10-31 14:32:53

数据中心网络架构

2010-01-04 09:15:19

三层交换技术

2009-05-06 09:40:04

LINQWEB开发构架

2012-08-02 11:05:04

系统建模架构

2014-02-12 10:07:07

三层交换原理

2011-05-12 14:24:14

三层架构

2009-07-28 17:18:33

点赞
收藏

51CTO技术栈公众号