mvp开发模式是什么意思(半分钟了解mvp模式)
MVC 模式
Model-View-Controller ,模型-视图-控制器模式
Model:针对业务模型,建立的数据结构,Model 与 View 无关,而与业务有关。
View:Android 中一般采用 XML 文件描述。
Controller:Android 中通常在 Activity,Fragment 中处理。
MVC 整体的实现过程可以概括为:
Controller 来操作 Model并将结果返回给 View 展示
一图胜前言.png
从图上可以看出 MVC 模式的缺点是 View 定义不够清晰,xml 文件属于 View 但是 Activity 、Fragment 中也有 View 的操作,为了解决这个问题,因此出现了 MVP 模式。
MVP 模式
Model-View-Presenter,是 MVC 的演化版本。
Model:主要提供数据的存取功能
View:Android 中一般是 Activity,Fragment,xml 文件
Presenter:作为 View 和 Model 之间的桥梁。
MVP 整体的实现过程可以概括为:
Model 定义好存取接口,Presenter 通过接口调用 Model 中的接口获取到结果,最后通过 View 接口去展示具体 View
image.png
从上图可以看出 MVP 解决了 MVC 中 View 定义不清晰的问题,同时划清了 Model 和 View 的界限,View 不能直接访问 Model,Model 也是不能直接访问 View。
MVP 的处理大部分都是通过接口去实现的,这也会导致代码的逻辑层级较深,所以又出现了一个架构模式 MVVM。
MVVM 模式
了解的不是很深入,写的可能有误,参考即可。
Model-View-ViewModel,和 MVP 类似,但是使用 ViewModel 替换了 Presenter 。
ViewModel :View 和 Model双向绑定,View 发生改变后 ViewModel 会通知 Model 跟随改变,同理 Model 改变 ViewModel 也会通知 View 跟随改变。
image.png
MVVM 虽然解决了 MVP 中代码层级深度过深问题,但是需要使用 DataBinding,代码层面也不易理解。
假装总结一下
在实际开发中,采用 MVP 模式已经足够了,虽然类文件会变多一些,但是能够降低代码之间的偶尔同时便于维护,这就够了。
对于 MVP 的学习,入门例子推荐 谷歌 GitHub 上的 TODO-MVP 例子。
如果想深入可以再把 TODO 系列看完,听说 MVP + RxJava + Dagger2 很香?
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)