MVP模式在Android项目中的使用
烦了在Activity中编写太多的代码,该app由我来主导。就选择用MVP模式。
概述
MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。
模型(Model)
负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;
视图(View)
负责界面数据的展示,与用户进行交互;
主持人(Presenter)
相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。
如上图所示,View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。
其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。
当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层
请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,
最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。
结合demo的示意图
图片放大看
这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。
技巧
MVP模式在Android项目中的使用相关推荐
- android中的mvp模式怎么定义,详解MVP模式在Android开发中的应用
一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Mode ...
- 浅谈Android中MVP模式用于实际项目中的问题与优化
学习MVP不算久,前段时间才把公司的两个项目完全转换为MVP模式,改了下来,略有心得,给大家分享一下. 才开始学习使用MVP时,看到大家说了很多MVP的优点,代码复用,条理清晰等等.不过我改下来发现, ...
- Android项目中最火最常用的优秀开源项目(很有用)
Android项目中最火最常用的优秀开源项目 分类 详细 框架名称 简介 Star 数 最近 更新 UI 刷新 SmartRefreshLayout Android 智能下拉刷新框架 7.7k 1天 ...
- mvp模式复用android,MVP模式
简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供 ...
- Android项目中如何用好构建神器Gradle?
摘要:本文作者贾吉鑫为大众点评Android工程师,在进行团队并行开发时,分库遇到的问题很多都要通过Gradle脚本解决.Gradle虽为构建神器,但学习曲线比较陡峭,要想在Android项目中用好G ...
- android项目中在webview中打开pdf
android项目中在webview中打开pdf. 关于android打开pdf文件方法有多种,下面的文章有详细说明: Android 实现 PDF 文件阅读功能调研 Android 使用PDF.js ...
- 浅谈Android项目中的build.gradle文件
一.gradle简介 gradle是基于groovy语言的. Android Studio是采用Gradle来构建项目的.Gradle是一个非常先进的项目构建工具,使用了一种基于Groovy的领域特定 ...
- android使用webview上传文件,Android项目中如何在webview页面中上传文件
Android项目中如何在webview页面中上传文件 发布时间:2020-11-26 15:56:27 来源:亿速云 阅读:68 作者:Leah 本篇文章为大家展示了Android项目中如何在web ...
- Android项目中创建编译期的注解
==注解 生命周期为RetentionPolicy.RUNTIME,可在运行时通过反射获取. 生命周期为RetentionPolicy.CLASS, 编译期处理的注解,可以使用APT(Annotati ...
最新文章
- 建造者模式(Builder)
- 【数理知识】矩阵束 Matrix Pencil
- 让架构更简单,QCon上海2016热点前瞻
- oKit项目管理软件试用及感受
- 用C#实现对Oracle 存储过程/函数/包的调试(附源代码)
- 【Elasticsearch】关于 Analyzers 的一切,第一部分
- docker搭建nginx
- 八月份技术指标和个人指标
- BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
- 怎么制止qq刷屏代码-vbs
- react-countup 电子表数字样式 定时滚动 大屏需要 炫酷
- Taro框架中开发H5使用微信分享
- 高颜值智能存储 华三魔术家M2无线云盘评测
- html转邮件html格式转换,如何把电子邮件格式改成HTML格式
- Spoon软件运行时点击右键程序无响应的解决方法
- 中e管家理财小方法让闲钱变成活钱
- 低代码和零代码火了,十大利器推荐
- 【Practical】最小二乘与正规方程
- Java中过大整数储存问题(bushi
- 博客发在oschina
热门文章
- 小爱同学100个奇葩回复_小米小爱音箱Pro开箱评测,看到的不仅是全面升级更是小米loT的高速发展...
- linux cpu核数和线程数,cpu个数、核数和线程的理解
- Web项目:解决eclipse中jsp文件报错javax.servlet.http.HttpServlet 提示 was not found on the Java Build Path的错误
- C语言指针原来也可以这么的通俗易懂!
- RabbitMQ安装和使用(和Spring集成)
- java web tomcat 实例_Java Web应用开发实例
- mysql 有外键 怎么插入数据_外键约束的表怎么插入数据
- android strictmode有什么作用,Android 性能优化 之 StrictMode
- linux获取bind返回值信息,v$sql_bind_capture 获取绑定变量信息
- ios时间相差多少天_上海自驾拉萨,走川进青出,应如何规划线路?需要多少天时间?...