一个简单mvp安卓应用的设计

1.需求设计:

定义一个需求,打开界面的时候访问网络数据,在请求结束之前显示进度条,请求成功后隐藏进度条并显示请求回来的文本,请求失败之后隐藏进度条并显示错误信息

2.代码结构设计

一个简单mvp安卓应用的设计

如图所示,整个分为model,viewpresenter层,model执行真正的数据请求操作,其中既包括了网络访问,也包含了数据库的访问,文件操作等.view层主要进行界面的展示操作,里面要做的内容就是操作控件,presenter层主要是对model层和view层进行耦合.将二者进行结合.下面以MainActivity作为入口进行整个框架的介绍.
1.首先我们要明确我们的视图需要进行哪些操作,再根据这些操作定义相应的接口,比如我们这里就需要控制进度条的显示和隐藏,以及显示网络请求的结果,我们定义接口IView,里面定义几个方法,showLoading()显示进度条,hideLoading()隐藏进度条,showText(String text)显示请求结果内容.

一个简单mvp安卓应用的设计
MainActivity需要实现IView接口,然后重写里面的所有:方法,并在方法内部进行相应的界面操作,同时在MainActivity里面还要新建一个Presenter对象,将自身传进去,接着调用Presenter的加载数据的方法,只有调用了加载数据的方法,MainActivity里面重写的三个方法才能生效
一个简单mvp安卓应用的设计
2.刚刚我们用到了Presenter层的一个类,在代码中我们定义的是DataPresenter,
一个简单mvp安卓应用的设计
DataPresenter
它由一个带参的构造方法以及一个加载数据的方法组成,在loadData()方法中我们会调用model层的方法来进行实际的加载数据的动作,这里我们就需要进行model层的介绍了,model里面首先会有一个接口ILoadData,接口定义了一个getData()方法,方法中会传入一个参数,一般是一个监听器的子类对象(ILoadDataListener),如果涉及到网络请求操作的话还会传入一个url地址,这里的ILoadDataListener
一个简单mvp安卓应用的设计
ILoadDataListener
接口内部定义了两个方法,一个onSuccess,一个onFailed(),主要用来表示获取数据成功还是失败的监听.一般的,在创建完ILoadData
一个简单mvp安卓应用的设计
ILoadData
接口之后,我们会创建一个它的实现类ILoadDataImpl,
在里面重写getData()方法,然后将网络请求写在里面,demo中我们使用了retrofit来进行网络请求在onResponse()方法内部调用ILoadDataListeneronSuccess()方法,在onFailure()内部调用onFailed()方法
一个简单mvp安卓应用的设计
ILoadDataImpl
3.我们再来梳理一下整个流程,当界面启动的时候,初始化Presenter对象,接着调用其loadData()方法,loadData()中调用ILoadDataImplgetData()方法,传入ILoadDataListener子类对象,重写onSuccessonFailed方法,在这两个方法中调用IView接口的相关操作ui的方法,这里面我们总共定义了三个接口,两个是model层的,一个是view层的,分别承担了数据加载,数据监听和界面更新的功能,可见接口定义在mvp开发框架中的重要性,可以说是框架的框架,因此搭建整个框架的第一步就是梳理出好的接口框架,这样在后面复用性和效率上会大有益处.
demo上传到本人github:https://github.com/yangtao0619/MvpDemo
上一篇:markdown基本语法摘录


下一篇:JanusGraph系统架构