Android MVP 架构及布局业务逻辑复用
来源:互联网 发布:淘宝大件物流怎么设置 编辑:程序博客网 时间:2024/06/09 21:51
MVP 架构
首先附上Google官方的 MVP 架构 Github 项目地址
Google Android-Architecture
MVP在很多博客,以及百度百科上都有介绍,这里仅仅简单介绍下.
Model
对于Model层也是数据层。它区别于MVC架构中的Model,在这里不仅仅只是数据模型。在MVP架构中Model它负责对数据的存取操作,例如对数据库的读写,网络的数据的请求等。
View
对于View层也是视图层,在View层中只负责对数据的展示,提供友好的界面与用户进行交互。在Android开发中通常将Activity或者Fragment作为View层。
Presenter
对于Presenter层他是连接View层与Model层的桥梁并对业务逻辑进行处理。在MVP架构中Model与View无法直接进行交互。所以在Presenter层它会从Model层获得所需要的数据,进行一些适当的处理后交由View层进行显示。这样通过Presenter将View与Model进行隔离,使得View和Model之间不存在耦合,同时也将业务逻辑从View中抽离。
MVP 的好处
一句话概括:业务逻辑与视图层的分离,业务逻辑与数据层的分离。很多人写Android入门的时候,会把所有的代码集中到Activity或者Fragment上,导致从数据库读取数据,更新页面,跳转页面等各个方法都集中在一起,十分混乱,在业务逻辑以及界面展示发生稍微一点点改变的时候,就会导致改变一个引发其他的BUG。
首先第一点:MVP 离不开 Java 的 Interface 特性,建议掌握好 Interface
举一个MVP的实际例子
复用
举个例子:知乎的用户列表界面,可以是某个用户关注的用户,也可以是某个用户的粉丝列表,还可以是某个问题的关注用户列表,或者是某个用户的黑名单列表。
如果我们要想复用该列表布局的话,(虽然很多应用并不会经常重复使用某一个布局)。此时把所有代码集中到Activity的方法是不可行,那意味着,我们要写很多重复的Activity,每个Activity都会包括更新列表,单击用户头像跳转等重复函数,仅有的不同的是他们获取数据源的方法不同(有的页面是获取问题的关注者,有的是获取用户的粉丝)。
复用View:同一个View,通过接口适配了不同的Presenter 这里是布局复用。
复用Presenter:同一个Presenter,通过接口适配了不同的View 这里是业务逻辑复用。
复用Model:Model的操作比较零散,所以基本不算在复用上。
更新
当然MVP的好处不止复用,最重要的是,只要维护好两个不同层之间的接口调用,我们可以做到对层的重构,不影响其他层。比如View层之前的用户列表是头像在左,介绍在右,现在美工更改了风格,进行了小小调整,对头像进行了圆形裁剪,更改了用户个人信息的显示布局。
MVP 实例
针对刚刚说的知乎用户列表,首先分析,用户列表里那些是视图层(View),哪些是业务逻辑层(Presenter),哪些是数据层(Model)。
View:获取到了用户数据列表后,通过ListView或者RecycleView进行显示用户数据。错误提示:对话框提示。
Model:如何获取用户的数据:网络方法获取,本地缓存获取……以及该次获取数据请求返回的结果:成功还是失败?
Presenter:如何处理数据层返回的结果:成功的话,通知View显示信息,失败的话,通知View进行失败提示。同时Presenter经常也会用于View层的业务逻辑,比如检测密码是否一致,用户名是否规范等等。
onViewDataReceive(UserInfo user);onViewDataReceiveError(String cause);onDataReceive(UserInfo user);onDataReceiveError(String cause);
之前的数据接受错误是弹出一个对话框提示,而现在我要改成从底部出现SnackBar通知
#
- Android MVP 架构及布局业务逻辑复用
- [架构设计] 什么是业务逻辑
- android源码分析--MMS data 数据模型及业务逻辑transaction
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- 用MVP架构开发Android应用
- Android MVP架构浅析
- android MVP架构
- Android MVC、MVP架构
- android MVP架构
- Android MVP 架构示例
- android mvp架构 浅尝辄止
- android mvp架构
- android MVP架构学习
- dumpsys meminfo执行流程(一)
- java连接不上sq server 2012 express的解决方法
- ES6的变量
- Kivy显示中文
- 欧几里得+扩展欧几里得(理解)
- Android MVP 架构及布局业务逻辑复用
- PAT (Basic Level) Practise (中文)1075. 链表元素分类(25)
- 自定义的动态链接库使用
- C++ 未知数量参数/list的未知数量的初始化
- 计算机中的颜色表示法——RGB
- 2017 北京区域赛 J题
- char * 指针
- CMake封装库
- (转)Java RMI远程方法调用详解