目前流行的架构模式是MVC、MVP和MVVM

1.MVC

Model(模型)、View(视图)、Controller(控制器)

优点:

1)耦合性低,视图层和业务层分离

2)可维护性高,简单,方便修改

3)部署快

缺点:

1)没有明确的定义

2)不适合小型,中等规模的应用程序

3)视图与控制器间的过于紧密的连接

4)视图对模型数据的低效率访问

2.MVP

模型层(Model):负责存储、检索、操纵来自数据库或者网络的数据。 视图层(View):用户界面,一般采用XML文件进行界面的描述。 逻辑处理层(Presenter):作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。

优点:

1)解耦,模型与视图完全分离

2)模块职责划分明显

3)代码复用,灵活

4)测试方便,可脱离UI

缺点:

1)视图和Presenter的交互会过于频繁

2)增加来很多类文件

3.MVVM

Model(数据层)、ViewController/View(展示层)、ViewModel(数据模型)

优点:

1)低耦合。View可以独立于Model变化和修改,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 2)ViewModel可复用 3)独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。 4)双向绑定时,ViewModel解决MVP中View(Activity)和Presenter相互持有对方应用的问题,界面由数据进行驱动,响应界面操作无需由View(Activity)传递,数据的变化也无需Presenter调View(Activity)实现,使得数据传递的过程更加简洁,高效。

缺点:

1)数据绑定使得 Bug 很难被调试

2)数据双向绑定不利于代码重用

MVC、MVP和MVVM的优缺点相关推荐

  1. MVC, MVP 与 MVVM

    前几天读了阮一峰老师的文章<MVC,MVP 和 MVVM 的图示>,觉得讲得十分清晰,所以在这里做一波复习和总结. MVC, MVP 与 MVVM 是三种常见的软件架构,它们之间的特点与区 ...

  2. MVC,MVP与MVVM

    一.MVC是什么 1.MVC概念 MVC(Model View Controller),模型(model)-视图(view)-控制器(controller),软件框架的一种. (1)最上层view视图 ...

  3. MVC、MVP、MVVM结合案例详解-附Demo

    本篇以登陆模块功能详解MVC.MVP.MVVM的优缺点及使用. 目录 一.MVC 1.概念 2.总结 二.MVP 1.概念 2.总结 三.MVVM 1.概念 2.Android Data Bindin ...

  4. MVC, MVP, MVVM比较以及区别(下)

    上一篇得到大家的关注,非常感谢.一些朋友评论中,希望快点出下一篇.由于自己对于这些模式的理解也是有限,所以这一篇来得迟了一些.对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己 ...

  5. android MVC,MVP,MVVM

    1.MVC思想 无论在任何情况下,软件设计都要符合高内聚,低耦合的思想.如果背离这一原则,代码将很难进入维护. MVC出现与上世纪70年代,在三十多年的工程实践中,MVC充分证明了它的成功.在软件开发 ...

  6. android MVC,MVP,MVVM概论

    1.MVC思想 无论在任何情况下,软件设计都要符合高内聚,低耦合的思想.如果背离这一原则,代码将很难进入维护. MVC出现与上世纪70年代,在三十多年的工程实践中,MVC充分证明了它的成功.在软件开发 ...

  7. mvc mvvm mvp_mvc vs mvp vs mvvm

    mvc mvvm mvp 思想程序员(Thought Programmer) Nowadays we have many options when it comes to architecture d ...

  8. mvc mvp mvvm比较以及区别

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式. 软件中最核心的,最基本的东西是什么? 是的,是数据.我们写的所有代码,都是围绕数据的. 围绕着数据的产生.修改等变化,出现了 ...

  9. MVC、MVP、MVVM,我到底该怎么选?

    前言 MVC.MVP.MVVM是我们工作和面试中都比较重要的一块,但很多时候我们却有点迷惑.比如看了好多篇文章都搞不懂MVC到底是个啥本来想写个MVP写着写着就变成MVC了,到底Databing和MV ...

最新文章

  1. ACM模板--邻接矩阵 无向图
  2. eclipse failed to load the jni jvm.dll
  3. list中抽出某一个字段的值_Java的stream代替List解决单线程等问题
  4. POJ 1637 Sightseeing tour 混合图欧拉回路存在性判断
  5. cad常用字体包_水利设计CAD基础篇(一)
  6. basic与java,[求助]郁闷啊~!有没有会BASIC和JAVA的!帮帮忙呀!
  7. nhibernate入门的帮助
  8. linux发行版_2020年最漂亮的7个Linux发行版
  9. 免费机器视觉视频教程halcon-百度网盘
  10. 沟通CTBS助誉坤电子实现K/3远程接入
  11. 创建LV报错/dev/vgdata/data: not found: device not cleared Aborting. Failed to wipe start of new LV.
  12. ACdream 1069 无耻的出题人 无聊写着玩的题
  13. event是什么?事件对象
  14. java中的nio是啥,java中的NIO
  15. 现在的网页该不该兼容IE6/7
  16. Mysql之统计函数
  17. irsend 树莓派 php,使用树莓派(Raspberry Pi)实现智能家居(3/4)
  18. Docker学习-Network网络
  19. ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模
  20. ip地址中斜杠(/)含义

热门文章

  1. @Transactional注解最容易忽视的三个失效场景!
  2. Go 学习笔记(58)— Go 第三方库之 etcd/clientv3(连接客户端、PUT、GET、Lease、Op、Txn、Watch 基础概念说明)
  3. 解决pip安装报错:is not a supported wheel on this platform
  4. 数据库 user schema sqlserver 关系
  5. 解读Python的命名空间
  6. 基于javaGUI的文档识别工具制作
  7. LeetCode简单题之字符的最短距离
  8. LeetCode简单题之删除排序链表中的重复元素
  9. 如何在 CPU 上优化 GEMM
  10. TVM 高效保护隐私 ML