MVC你是怎样理解的?
近期的学术交流会议都在研究MVC,秉着好好学习,天天向上的心理,时不时的就去蹭会。说实话,原来也有看过MVC的一些相关资料,可是仅仅是浅尝辄止。并且,由于先学了三层,所以再看MVC的时候,潜意识里的就觉得它们是一个东西。可是MVC是MVC,三层是三层。以下就将昨晚学术交流会议讨论的结果以及讨论方式展现给大家。 如有不足之处,还望批评指正!
三层划分为U(界面层)、B(业务逻辑层)、D(数据訪问层),这是我们最先接触过的分层思想。在学了三层之后,我们又接触到了MVC ,这时候我们自然而然的会拿MVC与三层来做比較。可是比較之后,出现了以下的两种结果,下图所看到的:
错误观点一:
有部分人直接把三层的U层等同于MVC的View + Controller。 BLL层 + DAL层 等同于 Model。
正确观点一:
BLL层中包括两部分:一是IBLL,即抽象出来接口部分,定义了要做什么?二是BLL,即详细实现部分,定义怎么做?而Controller是控制器的意思,它负责的是转发到哪个视图和指挥要干什么(业务)?详细怎么干不用它管。所以实际上Controller = U的一部分 + IBLL。Model =【BLL(实现部分 )+ DAL】—> 容器:对象和操作。View仅仅负责展示数据结果。
错误观点二:
业务划分上是正确的,错在MVC的调用关系与三层一样。
三层调用关系:
1.U、B、D层自上而下依赖, 下层为上层服务;
2.U、B、D平等关系,U层不能越级跳转到D层。
正确观点二:
在MVC体系中提高了Controller(控制器)的地位。C是View与Model之间相互通信的中枢纽带。假设没有Controller的允许,View与Model是不可能进行通信的。换句话说,仅仅要Controller允许,View能够将数据给Model,Model发生了改变,也能通知给View。Controller掌握View节点间的变化和Model层中对象的操作。
相应我们的java web 里面,C 相当于是Servlet、Model相当于java Bean、 View 相当于是Jsp。浏览器直接发送请求到Servlet,Servlet接受到数据转到Model层去处理,最后Servlet将保存的结果转发到JSP页面,再由JSP页面将数据展示出来。由此可见,Servlet能够相应多个JSP页面。
综上所诉:
MVC在结构上发生了彻底的改变,并不同于三层。这样的变化在一定程度上带来了非常大的优点。
- 效率提高了,三层是严格的调用关系,传输或是读取数据的时候,须要经过层层调用,才干获取到数据。效率大大减少了。 而View和Model能够进行通信,传输速度加快。
- 解耦合,在Controller的统一管理下,用户和数据操作全然隔离。
- 灵活性大大提高,Controller能够管理多个View ,这样当View发生改变时,能够任意的更换。
总结:
对事物的认识是一个一步一步加深的过程。每一步加深也许会让我们推翻自己,可是这并不代表前面我们就是错的。这一次认识的加深一定是建立在被我们推翻的观点之上。 所以,认识没有对错之分,仅仅是说在什么样的条件下,就会有什么样的认识。
MVC你是怎样理解的?的更多相关文章
- MVC设计模式的简单理解
MVC介绍 众所周知MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,应该说MVC它是一种软件开发架构模式,它包含了很多的设计模式,最为密切是以下三种:Observer (观察者 ...
- 三层构架和 MVC的区别和理解
1.三层构架和 MVC 意思一样么? Java WEB 开发中,服务端通常分为表示层.业务层.持久层,这就是所谓的三层架构: 1.表示层负责接收用户请求.转发请求.生成数据的视图等: 2.业务层负责组 ...
- MVC与MVVM设计模式理解
MVC设计模式(View和Model之间不能直接通信) MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller: Model负责存储.定义.操作数据.从网络中获取 ...
- 转载 j2ee j2se j2me 区别,mvc 和ssh联系理解
[转]J2SE J2EE J2ME的区别 以及 MVC与SSH对应关系 2014-3-6阅读322 评论0 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在J ...
- 关于MVC与MVP的理解
1. MVC的理解误区 理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间的传输数据. 2. 把业务逻辑全部放在Controller端,认为 ...
- spring mvc 原理(快速理解篇)
这两张图大家应该都不陌生. 从图上来看就是:一个请求过来,front controller根据具体的请求路径分派到具体的controller,具体的controller处理请求并把处理结果返回给fro ...
- AspNet MVC中各种上下文理解
0 前言 AspNet MVC中比较重要的上下文,有如下: 核心的上下文有HttpContext(请求上下文),ControllerContext(控制器上下文) 过滤器有关有五个的上下文Actio ...
- java MVC架构-spring mvc,struct2(理解)
MVC架构实现基础: 基于filter或者servlet实现请求地址分析,如果需要控制类处理请求,则调用相应的控制类.调用控制类时,根据配置文件初始化控制类相关的参数.数据库连接可持久化存在.控制类处 ...
- Asp.net MVC中Route的理解
在Asp.net MVC中,对于一个请求,是通过路由找到对应的Controller类中的对应Action,并与model进行交互,最后返回到view. 就是说Asp.net MVC是用Route来定义 ...
- Asp.net MVC的Controller激活理解【学习笔记】
DefaultControllerFactory 是MVC默认的Controller查找和激活工厂类我们可以通过自定义ControllerFactory替换DefaultControllerFacto ...
随机推荐
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- Socket学习总结系列(一) -- IM & Socket
写在准备动手的时候: Socket通讯在iOS中也是很常见,自己最近也一直在学习Telegram这个开源项目,Telegram就是在Socket的基础上做的即时通讯,这个相信了解这个开源项目的也都知道 ...
- 树状数组【CF703D】Mishka and Interesting sum
Description 给你n( 1<=n<=1000000)个数,以及m(1<=m<=1000000)个询问,每个询问包括l和r,问你在这n个数中,区间l~r,出现偶数个数的 ...
- LCA+差分【p4427】[BJOI2018]求和
Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的\(k\) 次方和,而且每次的\(k\) 可能是不同的.此处节点深度的 ...
- oracle to_char FM099999
to_char(column,'FM099999') The FM in the format removes leading and trailing blanks.
- Codeforces 919 E Congruence Equation
题目描述 Given an integer xx . Your task is to find out how many positive integers nn ( 1<=n<=x1&l ...
- 求小于10000的素数的个数 Exercise06_10
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求小于10000的素数的个数 * */ public class Exercise06_10 { public static ...
- springmvc与前端数据交互实例
一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpServletRequest获取. @RequestMapping("/login.do" ...
- 【OpenJudge9267】【递推】核电站
核电站 总时间限制: 5000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB [描述] 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆 ...
- 125.乘积最大(划分性DP)
1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descriptio ...