近期的学术交流会议都在研究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在结构上发生了彻底的改变,并不同于三层。这样的变化在一定程度上带来了非常大的优点。

  1. 效率提高了,三层是严格的调用关系,传输或是读取数据的时候,须要经过层层调用,才干获取到数据。效率大大减少了。 而View和Model能够进行通信,传输速度加快。
  2. 解耦合,在Controller的统一管理下,用户和数据操作全然隔离。
  3. 灵活性大大提高,Controller能够管理多个View ,这样当View发生改变时,能够任意的更换。

总结:

对事物的认识是一个一步一步加深的过程。每一步加深也许会让我们推翻自己,可是这并不代表前面我们就是错的。这一次认识的加深一定是建立在被我们推翻的观点之上。 所以,认识没有对错之分,仅仅是说在什么样的条件下,就会有什么样的认识。



最新文章

  1. Java导出excel
  2. Git 恢复某个文件指定版本
  3. SQL排序
  4. Mac下安装及配置Eclipse
  5. zoj 3672 思考题
  6. lua wireshark 数据报解析
  7. C++ Primer 学习笔记_98_特殊的工具和技术 --优化内存分配
  8. 跳转到设置页面 与appstory
  9. yum仓库
  10. MySQL事件调度器event的使用
  11. 无声的吐槽csdn
  12. RSA简介(四)——求逆算法
  13. Learning Scrapy 中文版翻译 第一章
  14. PLINQ的 ForAll 对比集合的ForEach
  15. ORACLE取字段中的注释
  16. STM32L011D4 ----- 低功耗
  17. IDEA安装与破解
  18. SuperMap开发入门4——保存的坑
  19. 【NOIP2017】逛公园 最短路+DP
  20. [WinCE] [Win10] Win10 Creator 升级后 Windows Mobile Device Center 不能打开

热门文章

  1. AC日记——Collectors Problem uva 10779
  2. 树上两点的最近公共祖先问题(Least Common Ancestors)
  3. 高效mysql的习惯(程序员版本)
  4. 线程同步CriticalSection
  5. 在MYSQL中插入当前时间,就象SQLSERVER的GETDATE()一样,以及对mysql中的时间日期操作。
  6. 【spfa】bzoj3921 Mimori与树海
  7. C#SerialPort实现串口控制继电器
  8. Problem I: 零起点学算法30——输出四位完全平方数
  9. TabHost
  10. 网络采集软件核心技术剖析系列(4)---使用C#语言如何将html网页转换成pdf(html2pdf)