什么是 MVC 和 三层架构?

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

MVC 和 三层架构并没有可比性

三层架构 是指将程序分为数据访问、业务处理、界面三个层次,是软件整体架构。

MVC 是仅仅是界面架构,也就是它其实只是三层架构的界面部分,M是指实体模型或者实体模型的一个代理,而非领域模型,C是指控制器,仅仅是做转向,不应该包含任何业务逻辑,V就是视图了。

至于那些个什么什么O,都是实体在不同层的映射,
详见: 整理 JAVA 中 PO,VO,DO,TO,BO,DAO,POJO 的解释

另外,MVC 在一些小的程序中也经常被当做软件整体架构,那个时候 M 往往就是实体模型了,但是这种时候,V 就对 M 产生了直接引用,也就是界面对实体产生依赖,这是很不好的(但小程序问题不大),此时可以尝试使用 MVP 模式解耦。

至于业务,看你怎么定义领域模型了,一般像上传文件这种操作并不会牵扯企业的业务,那就不应该当做一个业务,但如果这个上传是在工作流或者一些特殊处理中,则有可能上升到业务。怎么做,要看具体问题。

什么是 MVC 和 三层架构?相关推荐

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

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

  2. MVC与三层架构区别

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

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

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

  4. 关于MVC与三层架构

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

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

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

  6. JavaWeb——MVC与三层架构

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

  7. 浅谈 MVC与三层架构

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

  8. MVC与三层架构理解

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

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

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

最新文章

  1. 开源 免费 java CMS - FreeCMS-功能说明-操作日志
  2. 35岁以前成功的12条黄金法则
  3. style.display,有点问题
  4. java io 结构_java 的IO类库的基本架构
  5. 纪念品分组java_纪念品分组 ——易懂、简介、技巧(Java代码)
  6. 字符串:你看的懂的KMP算法(带验证)
  7. mysql增删改查 工具类_JDBC工具类实现对数据库数据的增删改查
  8. 为什么不断做迁移,那是在还技术债
  9. php基于新浪ip库获取城市,WordPress-利用新浪IP库获取评论用户所在城市信息!
  10. 桌面计算机图标怎么调出来,我把桌面上的一个图标隐藏了如何显示出来
  11. presscad图层LIsp_统赢presscad2010免安装版 32位/64位
  12. Android 讯飞语音合成、语音播报(详细步骤+源码)
  13. Deep Learning 最优化方法之Momentum(动量)
  14. 【bzoj1050】[HAOI2006]旅行comf
  15. ElasticSearch倒排索引原理 数据的写入与查询过程
  16. Elasticsearch 中为什么选择倒排索引而不选择 B 树索引
  17. linux系统端口说明
  18. 显示器html看电视声音,使用显示器的内置音响播放声音需要满足以下两种条件...
  19. linux 查看环境变量和修改环境变量
  20. AUTO CAD 圆角如何转换为直角?

热门文章

  1. 冲!冲!冲!不断乐观!坚持努力!
  2. 概率密度函数中形状参数和尺度参数的区别
  3. 关于数据结构的学习目标
  4. 校园跑腿【圈子功能】
  5. 敖然:数字化手段要与业务需求深度结合|2021全球数字价值峰会
  6. Linux怎么学?一张思维导图带你深入Linux核心原理
  7. 计算机电缆护套厚度计算方法,电线电缆的导体、护套、绝缘计算公式介绍
  8. 解决:微信公众号开发公司内网代理问题
  9. android 面包屑控件,重新认识控件(一)【面包屑导航】
  10. tcp和udp可以共用端口