MVC、MVP和MVVM的优缺点
目前流行的架构模式是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的优缺点相关推荐
- MVC, MVP 与 MVVM
前几天读了阮一峰老师的文章<MVC,MVP 和 MVVM 的图示>,觉得讲得十分清晰,所以在这里做一波复习和总结. MVC, MVP 与 MVVM 是三种常见的软件架构,它们之间的特点与区 ...
- MVC,MVP与MVVM
一.MVC是什么 1.MVC概念 MVC(Model View Controller),模型(model)-视图(view)-控制器(controller),软件框架的一种. (1)最上层view视图 ...
- MVC、MVP、MVVM结合案例详解-附Demo
本篇以登陆模块功能详解MVC.MVP.MVVM的优缺点及使用. 目录 一.MVC 1.概念 2.总结 二.MVP 1.概念 2.总结 三.MVVM 1.概念 2.Android Data Bindin ...
- MVC, MVP, MVVM比较以及区别(下)
上一篇得到大家的关注,非常感谢.一些朋友评论中,希望快点出下一篇.由于自己对于这些模式的理解也是有限,所以这一篇来得迟了一些.对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己 ...
- android MVC,MVP,MVVM
1.MVC思想 无论在任何情况下,软件设计都要符合高内聚,低耦合的思想.如果背离这一原则,代码将很难进入维护. MVC出现与上世纪70年代,在三十多年的工程实践中,MVC充分证明了它的成功.在软件开发 ...
- android MVC,MVP,MVVM概论
1.MVC思想 无论在任何情况下,软件设计都要符合高内聚,低耦合的思想.如果背离这一原则,代码将很难进入维护. MVC出现与上世纪70年代,在三十多年的工程实践中,MVC充分证明了它的成功.在软件开发 ...
- mvc mvvm mvp_mvc vs mvp vs mvvm
mvc mvvm mvp 思想程序员(Thought Programmer) Nowadays we have many options when it comes to architecture d ...
- mvc mvp mvvm比较以及区别
MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式. 软件中最核心的,最基本的东西是什么? 是的,是数据.我们写的所有代码,都是围绕数据的. 围绕着数据的产生.修改等变化,出现了 ...
- MVC、MVP、MVVM,我到底该怎么选?
前言 MVC.MVP.MVVM是我们工作和面试中都比较重要的一块,但很多时候我们却有点迷惑.比如看了好多篇文章都搞不懂MVC到底是个啥本来想写个MVP写着写着就变成MVC了,到底Databing和MV ...
最新文章
- ACM模板--邻接矩阵 无向图
- eclipse failed to load the jni jvm.dll
- list中抽出某一个字段的值_Java的stream代替List解决单线程等问题
- POJ 1637 Sightseeing tour 混合图欧拉回路存在性判断
- cad常用字体包_水利设计CAD基础篇(一)
- basic与java,[求助]郁闷啊~!有没有会BASIC和JAVA的!帮帮忙呀!
- nhibernate入门的帮助
- linux发行版_2020年最漂亮的7个Linux发行版
- 免费机器视觉视频教程halcon-百度网盘
- 沟通CTBS助誉坤电子实现K/3远程接入
- 创建LV报错/dev/vgdata/data: not found: device not cleared Aborting. Failed to wipe start of new LV.
- ACdream 1069 无耻的出题人 无聊写着玩的题
- event是什么?事件对象
- java中的nio是啥,java中的NIO
- 现在的网页该不该兼容IE6/7
- Mysql之统计函数
- irsend 树莓派 php,使用树莓派(Raspberry Pi)实现智能家居(3/4)
- Docker学习-Network网络
- ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模
- ip地址中斜杠(/)含义
热门文章
- @Transactional注解最容易忽视的三个失效场景!
- Go 学习笔记(58)— Go 第三方库之 etcd/clientv3(连接客户端、PUT、GET、Lease、Op、Txn、Watch 基础概念说明)
- 解决pip安装报错:is not a supported wheel on this platform
- 数据库 user schema sqlserver 关系
- 解读Python的命名空间
- 基于javaGUI的文档识别工具制作
- LeetCode简单题之字符的最短距离
- LeetCode简单题之删除排序链表中的重复元素
- 如何在 CPU 上优化 GEMM
- TVM 高效保护隐私 ML