参考大佬写的文章:https://www.jianshu.com/p/f17f5d981de7

1、MVC模式

Model:模型层,负责处理数据的加载或存储
View:视图层,负责界面数据的展示,与和用户进行交互
Controller:控制层,负责逻辑业务的处理;连接View层和Model层,完成View层和Model层的交互

这么说太抽象了,我们举个栗子:

点击按钮数字增加
Model层就是数字的保存和更新,更新通知的是Activity,View层就是对应布局的xml文件,Activity充当Controller层,它接收view层的点击,然后通知model层你该增加了。
大佬的图特别直观:

  • 优点
    View层和Model层解耦,通过Controller层来进行联系
    职责划分明确,有利于代码的维护
  • 缺点
    Activity除了要连接View层(加载布局、接受用户操作),还要承担Controller层的职责(业务逻辑的处理)。它和View,Model层是有交互的,并没有做到完全分离,会产生耦合。
    界面变多或者逻辑太复杂,Activity会不堪重负。

2、MVP模式

大家用的基本上都是它。为了分离Activity中的View层和Controller层,又进一步对Activity做了瘦身。

Model:模型层,负责存储、检索、操纵数据。
View:视图层,负责界面数据的展示,与用户进行交互。
Presenter:呈现层,连接View层和Model层,处理业务逻辑。

我们还是举这个例子:
点击按钮数字增加
Model负责数据的保存和更新,更是通知的是Presenter。(在MVC模式中通知的是Activity,也就是Controller,但是在Actvity中还是和View发生了交互,而这里不会)
View层是Activity,同时持有Presenter的引用。
Presenter层是接口,负责业务逻辑处理。

  • 优点
    ① 通过Presenter实现数据与视图之间的交互,完全隔离了View层和Model层。
    ② 对Activity成功进行了瘦身。

MVC和MVP模式的区别

3、MVVM模式

Model:模型层,负责处理数据的加载或存储。
View:视图层,负责界面数据的展示,与用户进行交互。
ViewModel:视图模型,负责完成View于Model间的交互,负责业务逻辑。

这三种模式的定义都差不多,但是它的内部实现不一样。

  • 优点
    Model层和View层耦合进一步降低
  • 缺点
    程序难以调试,界面出现异常时,可能是View的问题,也肯是Model的问题,定位出异常比较困难。

最新文章

  1. 编译osgEarth2.8+VS2013+CMake3.4.0在Release版本的问题
  2. day10---multiprocess 多进程
  3. 使用ADO.NET执行SQL脚本
  4. Android Actitity的生命周期
  5. revert merge会出现的问题
  6. IOS设计模式的六大设计原则之开放-关闭原则(OCP,Open-Close Principle)
  7. How to create a project with existing folder of files in Visual Studio?
  8. UIActionSheet 这样写为什么显示为空白 ???
  9. hdu 2063 过山车(二分图最佳匹配)
  10. EL表达式中如何截取字符串
  11. Bzoj 3343: 教主的魔法 分块,二分
  12. iOS中常用的四种数据持久化技术
  13. golang的Channel
  14. 剑指Offer_6_从尾到头打印链表
  15. linq用法整理
  16. initWithFrame方法的使用
  17. 关于adaboost分类器
  18. centos 7 安装svn客户端
  19. ccf201703-1分蛋糕
  20. Oracle SQLPLUS提示符设置

热门文章

  1. WebService-CXF 学习笔记
  2. Maven笔记一
  3. Java-用星号打印菱形
  4. rarlinux安装和使用
  5. C++11并发编程3------线程传参
  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:激活状态
  7. insert和delete底层实现的方式
  8. 新闻网大数据实时分析可视化系统项目——12、Hive与HBase集成进行数据分析
  9. Linux查看某个文件 单个字符的 个数
  10. Kubernetes——机密数据管理