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 很香?