mvp开发模式是什么意思(半分钟了解mvp模式)

MVC 模式

Model-View-Controller ,模型-视图-控制器模式

  • Model:针对业务模型,建立的数据结构,Model 与 View 无关,而与业务有关。
  • View:Android 中一般采用 XML 文件描述。
  • Controller:Android 中通常在 Activity,Fragment 中处理。

MVC 整体的实现过程可以概括为:

Controller 来操作 Model并将结果返回给 View 展示

简单图解 MVP、MVC 、MVVM 模式

一图胜前言.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

简单图解 MVP、MVC 、MVVM 模式

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 跟随改变。

简单图解 MVP、MVC 、MVVM 模式

image.png

MVVM 虽然解决了 MVP 中代码层级深度过深问题,但是需要使用 DataBinding,代码层面也不易理解。

假装总结一下

在实际开发中,采用 MVP 模式已经足够了,虽然类文件会变多一些,但是能够降低代码之间的偶尔同时便于维护,这就够了。

对于 MVP 的学习,入门例子推荐 谷歌 GitHub 上的 TODO-MVP 例子。

如果想深入可以再把 TODO 系列看完,听说 MVP + RxJava + Dagger2 很香?

(0)
仰望辉煌。  的头像仰望辉煌。  

相关推荐

发表回复

登录后才能评论