Model-View-Controller ,模型-视图-控制器模式数据结构
MVC 总体的实现过程能够归纳为: Controller 来操做 Model并将结果返回给 View 展现 架构
从图上能够看出 MVC 模式的缺点是 View 定义不够清晰,xml 文件属于 View 可是 Activity 、Fragment 中也有 View 的操做,为了解决这个问题,所以出现了 MVP 模式。学习
Model-View-Presenter,是 MVC 的演化版本。双向绑定
MVP 总体的实现过程能够归纳为: Model 定义好存取接口,Presenter 经过接口调用 Model 中的接口获取到结果,最后经过 View 接口去展现具体 Viewcdn
从上图能够看出 MVP 解决了 MVC 中 View 定义不清晰的问题,同时划清了 Model 和 View 的界限,View 不能直接访问 Model,Model 也是不能直接访问 View。xml
MVP 的处理大部分都是经过接口去实现的,这也会致使代码的逻辑层级较深,因此又出现了一个架构模式 MVVM。blog
了解的不是很深刻,写的可能有误,参考便可。接口
Model-View-ViewModel,和 MVP 相似,可是使用 ViewModel 替换了 Presenter 。开发
ViewModel :数据和 Model双向绑定,View 发生改变后 ViewModel 会通知 Model 跟随改变,同理 Model 改变 ViewModel 也会通知 View 跟随改变。it
MVVM 虽然解决了 MVP 中代码层级深度过深问题,可是须要使用 DataBinding,代码层面也不易理解。
在实际开发中,采用 MVP 模式已经足够了,虽然类文件会变多一些,可是可以下降代码之间的偶尔同时便于维护,这就够了。
对于 MVP 的学习,入门例子推荐 谷歌 GitHub 上的 TODO-MVP 例子。
若是想深刻能够再把 TODO 系列看完,据说 MVP + RxJava + Dagger2 很香?