MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。

模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;

视图(View):负责界面数据的展示,与用户进行交互,主要是指Fragment ,Activity;

主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来;

View层与Model层并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。

这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。

-    View发生改变,不影响model

-    model发生改变,不影响View

-    presenter发生改变,只需要改persenter

下面是用MVP模拟登陆的一个简单Demo:

首先是V层接口,里面写了获取账号密码,登陆成功和失败四个方法,它需要到Activity或者Fragment中去实现。

然后到我们的M层接口,接口回调提高了代码的复用性,CallBacks里是我们的成功失败方法:。

写完Model的接口之后,要去Model类里实现我们的接口,进行一个简单的账号密码匹配,如果匹配成功返回我们CallBacks里边的成功方法,然后传入参数。

然后重要的P层,P层需要持有M和V层,然后让它们进行关联,V层的onGetName,onGetPassword方法把账号密码传给M层让之进行匹配。利用callbacks把参数传给我们的V层。

最后到我们的Activity中,继承View接口,实现View的方法。我们还需要调用P层的方法才可以 。

这是View层的实现类。重写了V层的方法。

这样一个简单的Demo就实现了。

android mvp简书,Android_MVP学习相关推荐

  1. android rxjava2 简书,RXJava2学习

    什么是RxJava 一个可观测的序列来组成异步的.基于事件的程序的库.(简单来说:它就是一个实现异步操作的库) RxJava 好在哪? RxJava 其实就是提供一套异步编程的 API,这套 API ...

  2. android jsoup简书,Jsoup学习及使用

    * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容. 它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操 ...

  3. android 仿简书评论,Android仿简书搜索框效果的示例代码

    前言 之前用简书的时候一直是在web端,后来下载了客户端,看到了搜索的那个动画,就尝试的去写了,没写之前感觉挺容易的,写了之后,就感觉里面还是有些要注意的东西的.话不多说,直接上图. Activity ...

  4. android jsoup简书,jsoup爬虫简书首页数据做个小Demo

    昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固,比如java反射注解,知道一点就是说不出来,很尴尬... 生命不止,学习不止啊 之前那个项目 Q ...

  5. android计步器简书,自定义View-仿QQ运动步数进度效果

    自定义View-仿QQ运动步数进度效果 一.写在前面 (1) 图一,仿QQ步数运行效果 (2) 图二,完整的圆效果 完整代码请看这 二.正文开始 (1)首先来个三部曲,自定义属性,布局设置,属性获取 ...

  6. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  7. Android仿简书、淘宝等APP View弹出效果

    在用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑. 先看看效果: 主要是scale,alpha,translation几个普通动画组合,这里不再分析. 实现效果图: 代码:https ...

  8. android仿简书编辑器,类似zine,简书的app移动编辑器-Light Seven

    原标题:类似zine,简书的app移动编辑器-Light Seven 无论你是否从事文字编辑工作,我相信每个人都会接触到文字编辑.既然接触到文字编辑,顺理成章的就会接触到文字编辑的应用和软件. 在生活 ...

  9. android mvc mvp 简书,浅析 MVP,MVC,MVVM模式(Android)

    前言 当我们接手一个项目的时候,经常会发现一个activity或fragment动辄上千行甚至上万行代码,这给阅读带来很大的困扰,如果想读懂代码,需要花费很多时间跟精力.引起这个问题的原因想必大家都了 ...

最新文章

  1. I/O多路转接之 select
  2. C/C++构造及析构顺序及变量的生命周期
  3. ip地址异常判定python_python检测异常ip,并查询ip详细信息
  4. redis集群搭建与配置
  5. Element Tree型控件
  6. c gui qt 4编程第二版_我的QT5学习之路(一)——浅谈QT的安装和配置
  7. Java_MD5的使用
  8. [渝粤教育] 西南科技大学 语言学概论(汉语言文学) 在线考试复习资料
  9. C# 自己绘制报表,GDI你会用吗?
  10. python list 排序
  11. 工具-cloc代码行数统计工具
  12. laravel 框架命令
  13. C# 使用iTextSharp中间件打印PDF
  14. shell脚本之批量删除文件
  15. flask 定时任务 flask-apscheduler
  16. 微软这个系统,90% 的人都没用过!
  17. linux编译谷歌浏览器方法,构建Linux版本的谷歌Chrome浏览器
  18. 2018 天梯赛及蓝桥杯比赛感想
  19. PHP之thinkPHP(一)
  20. 阿里腾讯“互撕”升级,双方都豁出去了

热门文章

  1. 集合-ArrayList
  2. Softmax vs. SoftmaxWithLoss 推导过程
  3. 科大星云诗社动态20210318
  4. 云炬随笔20211002
  5. 使用Delphi命名空间
  6. 上传文件时路径总是C:\fakepath\的问题
  7. Redis缓存穿透、击穿、雪崩、预热、更新、降级
  8. 一文看懂NumPy的切片中常用的冒号
  9. 操作系统(六)系统调用
  10. STM32开发 -- 打开网址测试脚本编写