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

简介: 我们可能都听说过当前在安卓应用中使用比较多的mvp结构,但是很多人都没有用过或者真正的花时间了解过,下面我将用一个例子来说明一个简单的mvp应用如何来开发,本人才疏学浅,稳重如有不当之处,欢迎批评指正

1.需求设计:

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

2.代码结构设计

screenshot

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

IView
MainActivity需要实现 IView接口,然后重写里面的所有:方法,并在方法内部进行相应的界面操作,同时在 MainActivity里面还要新建一个 Presenter对象,将自身传进去,接着调用 Presenter的加载数据的方法,只有调用了加载数据的方法, MainActivity里面重写的三个方法才能生效
MainActivity
2.刚刚我们用到了 Presenter层的一个类,在代码中我们定义的是 DataPresenter,
DataPresenter
DataPresenter
它由一个带参的构造方法以及一个加载数据的方法组成,在 loadData()方法中我们会调用 model层的方法来进行实际的加载数据的动作,这里我们就需要进行 model层的介绍了, model里面首先会有一个接口 ILoadData,接口定义了一个 getData()方法,方法中会传入一个参数,一般是一个监听器的子类对象( ILoadDataListener),如果涉及到网络请求操作的话还会传入一个 url地址,这里的 ILoadDataListener
ILoadDataListener
ILoadDataListener
接口内部定义了两个方法,一个 onSuccess,一个 onFailed(),主要用来表示获取数据成功还是失败的监听.一般的,在创建完 ILoadData
ILoadData
ILoadData
接口之后,我们会创建一个它的实现类 ILoadDataImpl,
在里面重写 getData()方法,然后将网络请求写在里面, demo中我们使用了 retrofit来进行网络请求在 onResponse()方法内部调用 ILoadDataListeneronSuccess()方法,在 onFailure()内部调用 onFailed()方法
ILoadDataImpl
ILoadDataImpl
3.我们再来梳理一下整个流程,当界面启动的时候,初始化 Presenter对象,接着调用其 loadData()方法, loadData()中调用 ILoadDataImplgetData()方法,传入 ILoadDataListener子类对象,重写 onSuccessonFailed方法,在这两个方法中调用 IView接口的相关操作ui的方法,这里面我们总共定义了三个接口,两个是model层的,一个是view层的,分别承担了数据加载,数据监听和界面更新的功能,可见接口定义在 mvp开发框架中的重要性,可以说是框架的框架,因此搭建整个框架的第一步就是梳理出好的接口框架,这样在后面复用性和效率上会大有益处.
demo上传到本人github: https://github.com/yangtao0619/MvpDemo
目录
相关文章
|
2月前
|
安全 区块链 数据安全/隐私保护
链游开发正式版丨链游系统开发指南教程丨链游系统源码程序
链游系统开发规则指的是在构建基于区块链技术的游戏系统时需要遵循的一系列规定和准则。这些规则旨在确保链游系统的安全性、可靠性、透明性和用户体验,
|
3月前
|
存储 前端开发 IDE
【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇
【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇
99 0
|
4月前
|
编译器 程序员 Linux
嵌入式软件开发第一讲笔记
嵌入式软件开发第一讲笔记
30 0
|
8月前
|
开发框架 JavaScript 前端开发
HarmonyOS学习路之方舟开发框架—方舟开发框架(ArkUI)概述
方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。
|
8月前
|
编解码 开发者
HarmonyOS学习路之开发篇—多媒体开发(视频开发 一)
HarmonyOS视频模块支持视频业务的开发和生态开放,开发者可以通过已开放的接口很容易地实现视频媒体的播放、操作和新功能开发。视频媒体的常见操作有视频编解码、视频合成、视频提取、视频播放以及视频录制等。
|
8月前
|
存储 文件存储
HarmonyOS学习路之开发篇—多媒体开发(视频开发 二)
视频播放开发 场景介绍 视频播放包括播放控制、播放设置和播放查询,如播放的开始/停止、播放速度设置和是否循环播放等。
|
10月前
|
存储 SQL 前端开发
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
|
11月前
|
数据采集 存储 设计模式
嵌入式软件应用程序开发框架浅见
嵌入式Linux系统上开发,其实和PC上的软件开发很类似,一个好的框架,能保证系统的稳定性,同时也能降低开发难度。
185 0
|
人工智能 数据可视化 物联网
HarmonyOS 2.0 手机开发者 Beta 版如期而至,带来“应用天生跨端”的全新开发体验
HarmonyOS 2.0 手机开发者 Beta 版如期而至,带来“应用天生跨端”的全新开发体验
HarmonyOS 2.0 手机开发者 Beta 版如期而至,带来“应用天生跨端”的全新开发体验