我们平时总是将三层架构与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.都是在分层,即都是在解耦。

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

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

转载于:https://www.cnblogs.com/syl1314/p/8056417.html

MVC与三层架构区别相关推荐

  1. 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC

    阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...

  2. 关于MVC与三层架构

    我认为MVC设计模式,关键在于构建Model,Model就是MVC模式的灵魂,他包含了三层架构里面的 "实体规范层"."行为规则层"."数据访问层&q ...

  3. JavaWeb——MVC与三层架构

    文章目录 JavaWeb--MVC与三层架构 1.三层架构 2.MVC 3.MVC与三层架构的对应联系 4.MVC与三层架构的区别 JavaWeb--MVC与三层架构 1.三层架构 三层架构 (3-t ...

  4. MVC与三层架构理解

    文章目录 1. JSP的发展 2. MVC思想 优缺点 3. 三层架构 为什么使用三层 三层优缺点 4. MVC与三层架构的区别 1. JSP的发展 早期只有Servlet,只能使用response输 ...

  5. MVC与三层架构的联系及三层架构实现学生注册功能

    MVC与三层架构的联系及三层架构实现学生注册功能 三层架构的逻辑关系: MVC和三层架构的联系: 三层架构实现学生注册功能的逻辑: 学生注册页面: 输入学生信息: 完成学生注册: 代码实现: add. ...

  6. MVC与三层架构模型笔记

    文章目录 1. MVC 1.1 什么是MVC 1.2 为什么需要MVC 2. 项目的三层架构 2.1 表现层 User Interface layer 2.2 业务逻辑层 Business Logic ...

  7. 浅谈 MVC与三层架构

    引言: 使用Eclipse开发工具写Java Web项目时会发现,一个中型或者大型项目 随着代码的增多,会发现:代码既可以写在src目录下,也可以写在WebContent目录下.src下可以建很多包 ...

  8. MVC与三层架构之间的关系

    一. MVC MVC是软件工程中的一种软件架构模式,分为Model(模型).View(视图).Controller(控制器) 1. Model model是应用对象,程序员编写程序应有的功能(实现算法 ...

  9. 什么是 MVC 和 三层架构?

    什么是 MVC 和 三层架构? MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻 ...

最新文章

  1. html响应式导航栏制作,用Sass制作响应式导航栏(原创)
  2. vs里面mfc是什么_最近!一大批人正在前往文安,究竟发生了什么?
  3. mysql shell 所有表_删除mysql数据库中所有表的shell脚本
  4. 高速缓冲存储器(Cache)
  5. 【英语学习】【WOTD】imbroglio 释义/词源/示例
  6. Javascript项目
  7. c语言 turbo,C语言Turbo C 2.0内容介绍
  8. Github创建的个人简历
  9. SolidWorks学习(1):基础绘图
  10. 转android gralloc流程分析for msm8960
  11. Exporting the operator hardsigmoid to ONNX opset version 11 is not supported
  12. 抖音多闪背后的AI和社交
  13. Python基于OpenCV的土壤裂缝分割系统[源码&部署教程]
  14. c语言 快排,C语言 快排函数
  15. [NodeBB]NodeBB论坛站点管理小结
  16. 河北工程大学计算机考试题型,2019上半年河北工程大学计算机等级考试报名通知...
  17. 《数字逻辑设计与计算机组成》一 第3章 3.1 简介
  18. nagios的nsca被动模式及自动添加nsca服务
  19. qBittorrent
  20. js input 正则保留2位小数中文拼音输入问题 + 限制输入整数的方案

热门文章

  1. python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏
  2. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...
  3. python 发邮件_python发邮件
  4. 靶场练习第一天~vulnhub靶场之Me-and-My-Girlfriend-1
  5. c+ +三角函数_C ++中的三角函数
  6. 分析酸对酸性染料染羊毛染色性能的影响?举例说明酸性染料染羊毛时,如何选择合适的染浴pH值?并说明原因。
  7. 编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)
  8. linux内核设计与实现---从内核出发
  9. php数组的声明和类型
  10. uva 12105——Bigger is Better