MVP

news/2024/7/23 9:44:19

在传统的Android开发中,我们一般是使用MVC模式进行开发的。 传统MVC模式介绍:

View: 视图层,对应xml文件 Controller: 控制层,对应Activity和Fragment层,进行数据处理 Model:实体层,负责获取实体数据

在Android开发中采用MVC模式的一个有一个的弊端就是xml作为View层视图能力实在太弱,所以一般情况下我们都是通过Controller层来辅助处理一些视图的。这样的结果就导致Controller既作为控制层的同时又承担了View层的大部分功能,采用MVC模式往往会导致Activity和Fragment中的代码非常复杂。也有人说,Android的MVC不是MVC 因为V 和C 基本融合在一起了。

举个例子,简单的登录功能 Model层:

View层 Control层

随着功能的增加,Activity的代码也会越来越多。

MVP模式介绍:

View: 视图层,对应xml文件与Activity/Fragment Presenter: 逻辑控制层,同时持有View和Model对象 Model: 实体层,负责获取实体数据

先看一个demo,也是一个登录的例子,点击Aty上的登录按钮,实现登录

IModel

ModelImpl 访问服务器后,通知P层处理success事件

P层 ,做为M V的通信桥梁,在这里,P层继要将Aty点击事件传给Modle层,又要强modle层的返回数据处理后,返回给Aty,代码如下

P层实现

可以看到,在接收到Model的success之后,P层可以继续对数据做一些处理,然后逻辑处理完成后,再通知V层去更新View

V层

V层实现层

如果以后业务逻辑增加我们可以这样,比如说 需求忽然要再访问服务器后做一些事情。

P层

、 M层

以后不管逻辑怎么增加,我们在Activity里面可以这样做

采用MVP模式的优势是:

把业务逻辑抽离到Presenter层中,View层专注于UI的处理。 分离视图逻辑与业务逻辑,达到解耦的目的。 提高代码的阅读性。 可拓展性强。

采用MVP模式的缺点:

项目结构会对后期的开发和维护有一定的影响。具体视APP的体量而定。 代码量会增多,如何避免编写过多功能相似的重复代码是使用MVP开发的一个重点要处理的问题。 有一定的学习成本。


http://www.niftyadmin.cn/n/1496358.html

相关文章

2014年5个最流行前端框架对比

2019独角兽企业重金招聘Python工程师标准>>> 1. Bootstrap 2. Foundation by ZURB 3. Semantic UI 4. Pure by Yahoo! 5. UIkit by YOOtheme 转载于:https://my.oschina.net/u/1188671/blog/1589090

计算机不能上网查找原因的步骤,电脑能连接上wifi但不能上网的原因_电脑能连接上wifi但不能上网的解决方法...

电脑连上WiFi能够登录QQ,但是不能打开网页查资料,相信大部分用户都有此经历,简直另人疑惑不已。明明输入正确的WiFi密码,手机也是可以正常使用WiFi,为什么会这样?造成这样的问题原因比较多,现在…

计算机电池不输出保护电源适配器厂家,一种计算机电源适配器

主权项:1. 一种计算机电源适配器,包括壳体(1)、插头(6)、电线(9)和充电口(2),其特征在于,所述壳体(1)上设有电池放置槽(3),所述电池放置槽(3)内设有电池,所述电池放置槽(3)通过第一保护盖(4)封闭&#xff0…

在kubernetes中部署tomcat与mysql集群

在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础:1. 已安装、配置kubernetes2. 集群中有tomcat与mysql容器镜像3. 有docker基础具体步骤部署tomcat创建tomcat RC对象我们想要在kubernetes集群中配置tomcat服务器,首先要保证集群中的节点上…

运行计算机命令大全,计算机 开始 运行 命令大全(很实用).doc

怎么关闭自动更新开始菜单-〉运行:net stop "automatic updates",临时关闭command--------cmdfsmgmt.msc 共享文件夹netstat-an----查看端口osk屏幕键盘install.asp----修改注册网页eventvwr.msc 时间查看器secpol.msc 本地安全设置services.m…

2018 GitHub最火技术趋势

GitHub的高级技术副总裁Jason Warner在2018的技术趋势中挑出了数据、工作流集成(workflow integration)以及开源工具,他认为这些是一个公司在2018年能够取得成功的关键。\\Warner写道,数据将成为2018年全球增长的最重要因素&#…

求生之路2服务器ip直连,求生之路2不能联机_正版求生之路2好友直连显示该会话已不可用,无法联机...

求生之路2,怎么联机1、局域网联机 如果是在同一个地,先点屏幕左下方 开始 运行 输入 ipconfi,找到ip一项 记住后面的ip地址。求生之路2怎么联机求生之路2联机可以进行局域网联机和网络平台联机两种方式,下面是两种方式的操作步骤…

Xcode8.2自动打包

因为项目到了测试阶段,所以要有很多打包的动作。手动打包的话就比较麻烦。然后就像以前一样自动打包。但是Xcode8改了很多东西,好多东西变了,所以打包的话要重新弄。嗯,网上关于打包有很多的资料,比如这,还…