一、MVC与MVP简单介绍
1.MVC,模型-视图-控制器
model:业务逻辑和实体模型
view:对应的布局文件
controller:对应的Activity
VIew对应的布局文件,能做的事很少,关于布局文件中的数据绑定的操作,事件的处理等代码都在Activity中,使得Activity中的代码很多
2.MVP,模型-视图-层现器
model:业务逻辑和实体模型
view:对应的是Activity,负责view的绘制以及用户的交互
presenter:负责view和model的交互
减少了Activity的职责,简化了Activity中的代码,将复杂的逻辑代码交给了presenter中进行处理,模块职责划分清晰,方便进行测试
presenter与view之间的交互是通过接口
二、MVP的简单使用(登录为例)
1.Model层(负责从登录界面获取账号密码请求服务器进行验证)
(1)实体类LoginBean
(2)接口,用于model层所执行的业务逻辑LoginModel
(3)接口实现类,具体实现业务逻辑,包括主要的方法LoginModelImp
2.View层(将Model层请求的数据呈现给用户,包括界面ui,不包括界面逻辑,界面的逻辑由presenter来实现)
(1)接口,presenter与view交互是通过接口,接口中定义的方法是根据Activity用户交互需要的控件来确定的
(2)接口实现类,将定义的方法在Activity中对应实现具体操作
3.Persenter层(model和view交互的桥梁)
(1)接口,model和view交互的逻辑接口,model请求完之后的毁回调接口
(2)接口实现类,实现具体的Presenter类逻辑
三、
MVP模式的整个核心流程:
View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有View层的Interface的引用以及Model层的引用,而View层持有Presenter层引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的引用,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载情况,最后Presenter层再调用View层的接口将加载后的数据展示给用户。