烦了在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层可以封装复用,可以极大的减少代码量。

技巧

先确定Presenter类的方法,再推出view和model的方法。
步骤:
1、从页面功能按钮分析得出:
a)登录功能。b)清除功能。
2、Presenter类就有了
 login() 和 clear() 方法。
3、login()需要用户名和密码。则IView接口有了
a)getUserName()
b)getpawd()
c)showprocess() 显示进度条
d)显示登录结果,等等的方法
依次类推,把IView和IMode的方法推出来。

MVP模式在Android项目中的使用相关推荐

  1. android中的mvp模式怎么定义,详解MVP模式在Android开发中的应用

    一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Mode ...

  2. 浅谈Android中MVP模式用于实际项目中的问题与优化

    学习MVP不算久,前段时间才把公司的两个项目完全转换为MVP模式,改了下来,略有心得,给大家分享一下. 才开始学习使用MVP时,看到大家说了很多MVP的优点,代码复用,条理清晰等等.不过我改下来发现, ...

  3. Android项目中最火最常用的优秀开源项目(很有用)

    Android项目中最火最常用的优秀开源项目 分类 详细 框架名称 简介 Star 数 最近 更新 UI 刷新 SmartRefreshLayout Android 智能下拉刷新框架 7.7k 1天 ...

  4. mvp模式复用android,MVP模式

    简称:MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供 ...

  5. Android项目中如何用好构建神器Gradle?

    摘要:本文作者贾吉鑫为大众点评Android工程师,在进行团队并行开发时,分库遇到的问题很多都要通过Gradle脚本解决.Gradle虽为构建神器,但学习曲线比较陡峭,要想在Android项目中用好G ...

  6. android项目中在webview中打开pdf

    android项目中在webview中打开pdf. 关于android打开pdf文件方法有多种,下面的文章有详细说明: Android 实现 PDF 文件阅读功能调研 Android 使用PDF.js ...

  7. 浅谈Android项目中的build.gradle文件

    一.gradle简介 gradle是基于groovy语言的. Android Studio是采用Gradle来构建项目的.Gradle是一个非常先进的项目构建工具,使用了一种基于Groovy的领域特定 ...

  8. android使用webview上传文件,Android项目中如何在webview页面中上传文件

    Android项目中如何在webview页面中上传文件 发布时间:2020-11-26 15:56:27 来源:亿速云 阅读:68 作者:Leah 本篇文章为大家展示了Android项目中如何在web ...

  9. Android项目中创建编译期的注解

    ==注解 生命周期为RetentionPolicy.RUNTIME,可在运行时通过反射获取. 生命周期为RetentionPolicy.CLASS, 编译期处理的注解,可以使用APT(Annotati ...

最新文章

  1. 建造者模式(Builder)
  2. 【数理知识】矩阵束 Matrix Pencil
  3. 让架构更简单,QCon上海2016热点前瞻
  4. oKit项目管理软件试用及感受
  5. 用C#实现对Oracle 存储过程/函数/包的调试(附源代码)
  6. 【Elasticsearch】关于 Analyzers 的一切,第一部分
  7. docker搭建nginx
  8. 八月份技术指标和个人指标
  9. BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
  10. 怎么制止qq刷屏代码-vbs
  11. react-countup 电子表数字样式 定时滚动 大屏需要 炫酷
  12. Taro框架中开发H5使用微信分享
  13. 高颜值智能存储 华三魔术家M2无线云盘评测
  14. html转邮件html格式转换,如何把电子邮件格式改成HTML格式
  15. Spoon软件运行时点击右键程序无响应的解决方法
  16. 中e管家理财小方法让闲钱变成活钱
  17. 低代码和零代码火了,十大利器推荐
  18. 【Practical】最小二乘与正规方程
  19. Java中过大整数储存问题(bushi
  20. 博客发在oschina

热门文章

  1. 小爱同学100个奇葩回复_小米小爱音箱Pro开箱评测,看到的不仅是全面升级更是小米loT的高速发展...
  2. linux cpu核数和线程数,cpu个数、核数和线程的理解
  3. Web项目:解决eclipse中jsp文件报错javax.servlet.http.HttpServlet 提示 was not found on the Java Build Path的错误
  4. C语言指针原来也可以这么的通俗易懂!
  5. RabbitMQ安装和使用(和Spring集成)
  6. java web tomcat 实例_Java Web应用开发实例
  7. mysql 有外键 怎么插入数据_外键约束的表怎么插入数据
  8. android strictmode有什么作用,Android 性能优化 之 StrictMode
  9. linux获取bind返回值信息,v$sql_bind_capture 获取绑定变量信息
  10. ios时间相差多少天_上海自驾拉萨,走川进青出,应如何规划线路?需要多少天时间?...