Android -- 思考 -- 为什么要在项目中使用MVP模式
1,其实有时候一直在找借口不去思考这个问题,总是以赶项目为由,没有很认真的思考这个问题,为什么我们要在项目中使用MVP模式,自己也用MVP也已经做了两个项目,而且在网上也看了不少的文章,但是感觉在高层次的思想上还是没有去理解它,都是泛泛而谈的“解耦”、“扩展”的字眼,作为一个初中级开发者,我需要的是在实际开发场景中去一一对比一下,让开发者通过比较出来的优点来选择MVP模式,那么下面就带着大家来简单的分析分析。
2,现在有这样的一个需求场景,用户点击按钮从网络上获取数据,展示到我们的TextView上面,功能很简单,我们正常使用MVC的话就是在布局文件里面添加TextView和Button控件,再在Activity中写网络请求并将得到的数据通过逻辑设置到控件TextView上去,这样就能实现我们的功能了,现在产品将我们的需求更改成,用数据库中去获取我们的数据,并把数据以Toast的形式来提醒用户,那么现在有下面两个场景
①、之前的版本的代码是你写的,那么现在你就要去改Activity中的逻辑,虽然麻烦,但是没事,因为之前是你写的,你知道在哪里去修改它的。
②、之前的版本的代码不是你写的,那么现在就有点痛苦了,你需要把逻辑重新看一遍,再重新修改之前的代码,如果逻辑一复杂,你重新看一遍逻辑要时间,如果改错的话,影响之前已经写好的功能,这完全违背开闭原则
那么如果我们之前就是使用的MVP模式来开发的话,我们面对现在这个新需求的话该怎么做呢?
首先,对于数据由接口的形式更改成从数据库中读取,那么我们只需要Model层中的数据获取逻辑,Presenter 层拿到的是 Model 的接口,只关心 Model 层返回的数据,至于你的数据是从网络还是数据库还是本地数据库文件获取的,根本不必关心。
进而,对于数据显示有TextView更改为Toast,由于Presenter 拿到的也是 View 的接口, Presenter 从 Model 获取完数据,返回给 View ,就完成了他的工作,他根本不用管 View 是怎么实现的,使用 TextView 显示还是 Toast 显示,这些都是 View 的事
情,所以他们每层只用把各自的事情做好根本不用管以外的事情。
这样我们就可以把 View , Presenter , Model 拿给三个不同的人写,需求一变不会影响整个代码,将问题最小化。UI出问题了我们就把问题定位到View层,数据出问题了我们就把问题定位到Model层。实现我们上面看到的“解耦”、“扩展”、“团队协作”的功能。
看了上面的内容,你对使用MVP的理由还很模糊吗?
See You Next Time····
Android -- 思考 -- 为什么要在项目中使用MVP模式的更多相关文章
- Java(Android)编程思想笔记03:在Android开发中使用MVP模式
1. MVP模式简介: MVC模式相信大家肯定是比较熟悉的:M-Model-模型.V-View-视图.C-Controller-控制器. MVP作为MVC的演化版本,那么类似的MVP所对应的意义:M- ...
- Android 中的MVP 模式
MVP模式的核心思想: MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成功接口,Model类还是原来的Model. MVC 其中View层其实就是程序的UI界面,用于向用户展示 ...
- 如何去除vue项目中的 # --- History模式
来自:https://www.cnblogs.com/zhuzhenwei918/p/6892066.html 侵删 使用vue-cli搭建的环境,在配置好路由之后,可以看到下面的情况: 但是不难发现 ...
- 在Andoid开发中使用MVP模式来解耦,增加可测试性
by Jeff Angelini posted on 7/20/2011 2:35:00 PM 将应用程序UI的表现从Ui的逻辑中分离是一个好的想法.这种分离减少了代码耦合,代码更加干净, 甚至可以有 ...
- Android GreenDao 在组件化项目中的一个问题 - 2018年7月5日21:15:14
组件化项目使用GreenDao时注意的事项: 1.要在组件化中的基础库(domain层)创建实体类: 2.如果sycn之后不能生产Dao文件,使用 Android Studio 的Gradle插件重新 ...
- [Android Studio Problems]记录克隆项目中遇到的坑(问题)以及解决方法
①Migrate project to Gradle? 问题描述: This project does not use the Gradle build system. We recommend th ...
- android中的MVP模式
1.建立bean public class UserBean { private String mFirstName; private String mLastName; public UserBea ...
- springboot 项目中 使用 原型 模式 实现每一次 都获取不同的实例
直接 上代码:
- Androidmanifest.xml在Android项目中的作用
以下是一个项目中的AndroidManifest.xml文件: <?xml version="1.0" encoding="utf-8"?> < ...
随机推荐
- Bulk_Collect_Performance 比较
上一篇讲到了调用集锦,这篇关注一下性能问题吧. DECLARE CURSOR c_tool_list IS SELECT descr d1 FROM hardware; l_descr hardwar ...
- Java实现验证码制作之一自己动手
以前弄验证码都是现找现用,下面是自己跟着敲代码弄好的,记录一下,分享给大家. 我这里用的是Servlet ,Servlet代码如下 import java.awt.Color;import java. ...
- 中國區的代理協議的韓國遊戲廠商PatiGames
“與阿裏巴巴簽署旗下游戲「突突三國」在中國區的代理協議的韓國遊戲廠商PatiGames決定與阿裏巴巴終止合作.”相信這條前不久報導的新聞,很多人並不陌生,但這背後其實並不像表面那樣簡單.早在今年4月P ...
- 第一章-第一题(小学生四则运算)--By郭青云
1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如: 1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩 ...
- 让javascript显原型!
相信以下的javascript让你读起来痛苦不已,告诉你一下简单的办法,就可以让它显出原型!将第一个单词,即eval换成document.write,然后再运行一下,它立即就原形毕露了! eval(f ...
- PBOC2.0中消费交易流程
消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.此交易可以在销售点终端(POS)上脱机进行.使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要. 1.1 终 ...
- IntelliJ IDEA中如何显示和关闭----工具栏,目录栏,(转)
工具栏:就是上面有个好多的快捷按钮的那个栏,比如撤销,上传,下载设置,扳手按钮,等等. 目录栏,就是刚刚装的时候,这个会显示,但是不知道怎么关闭,但是这个又没什么用. 如图: 就是对应的几个按钮,自己 ...
- centos iptables
1.查看本机关于IPTABLES的设置情况iptables -L -niptables --listmore /etc/sysconfig/iptablesservice iptables statu ...
- 关于Android中查看app安装时间等信息的问题
PackageManager packageManager=this.getPackageManager(); try { PackageInfo packageInfo=packageManager ...
- JSP数据交互
JSP数据交互 一.jsp中java小脚本 1.<% java代码段%> 2.<% =java表达式%>不能有分号 3.<%!成员变量和函数声明%>二.注释 1 ...