MVC: Model - View - Controller

MVP: Model - View - Presenter

MVC和MVP到底有什么区别呢?

从上图可以看到在MVC里,View是可以直接访问Model的,从而View里面是能包含Model的信息的,不可避免还要包括一些业务逻辑。在MVC里更关注Model的不变,而同时有多个对Model的不同展示。

把Controller和View混在一起,会有一些弊端:

1、难以测试。

2、代码难以重用。

MVP是如何解决MVC的问题的?

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现,而且Presenter与具体的view是没有一点关联的,而是通过定义好的接口进行交互,从而使得在变更View的同时可以保持Presenter不变,即重用。

在MVP模式里,View只应该有简单的Set/Get方法,用户输入和设置显示的内容,除此不应该有更多的内容,绝不允许直接访问Model,这就是与MVC最大的不同之处

最新文章

  1. 关于 redis、memcache、mongoDB 的对比
  2. maven 配置
  3. [转]JavaScript程序编码规范
  4. thinkphp框架中“关联操作”的完整定义详解
  5. webform FileUpload控件实例应用 上传图片
  6. 2015年p2p网络借贷平台的发展现状
  7. LCIS POJ 2172 Greatest Common Increasing Subsequence
  8. Spring源码之SimpleAliasRegistry解读(一)
  9. javascript中的removeEventListener失效问题
  10. vim自动补全:go
  11. Qt事件机制浅析(定义,产生,异步事件循环,转发,与信号的区别。感觉QT事件与Delphi的事件一致,而信号则与Windows消息一致)
  12. 使用JDK自带的MessageDigest计算消息摘要
  13. 阿里舆情︱舆情热词分析架构简述(Demo学习)
  14. Windows 2008 asp.net 配置
  15. object detection[YOLOv2]
  16. bzoj 2460 [BeiJing2011]元素 (线性基)
  17. oracle进阶之connect by笔记
  18. An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
  19. 【Selenium-WebDriver问题点】chromeDriver和chrome浏览器版本之间的兼容性问题
  20. Maven项目jar包的依懒范围

热门文章

  1. Session在类库中的使用
  2. 为什么使用Junit Test而不用普通java main方法来完成测试?
  3. 在win7环境下批量修改文件权限
  4. JavaCV配置
  5. 非旋treap模板
  6. quicktest Professional下载地址,无限制使用方法
  7. PHP单例模式
  8. 106运用SWITCH语句打印星期几的单词
  9. android初级篇之apk签名key keystore格式转pk8+x509.pem
  10. PHP 开发API接口签名验证