一、简介
MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之间间隔着的是Presenter层,其负责调控View与Model之间的间接交互,MVP的结构图如上所示,对于这个图理解即可而不必限于其中的条条框框,毕竟在不同的场景下多少会有些出入的。在Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。
view:对应于activity,负责view的绘制以及用户交互
model:依然是业务逻辑和实体模型
presenter:负责完成view与model间的交互;收到View层UI上的反馈命令、定时命令、系统命令等指令后分发处理逻辑交由业务层做具体的业务操作,然后将得到的 Model 给 View 显示。
二、示例
自己学习是用的是别人的demo,感觉挺不错的,地址:http://wuxiaolong.me/2016/06/12/mvpRetrofitRxjava/;感谢大神的分享
项目结构大致如下:
项目结构关于demo,原文中有很好的解释!
mvp之V
mainView.javamvp之m
mainModel.javamvp之p
MainPresenter.javaMainActivity.java
MainActivity.java总结
mvc模式
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
View 传送指令到 Controller
Controller 完成业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
mvp模式
使用MVP时,Activity和Fragment变成了MVC模式中View层,Presenter相当于MVC模式中Controller层,处理业务逻辑。每一个Activity都有一个相应的presenter来处理数据进而获取model。
mvvm模式
将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。
这篇文章主要是便于自己以后复习方便,所以写的比较简单。
网友评论