Android MVP模式简单易懂的介绍方式 (一)

Android MVP模式简单易懂的介绍方式 (一)

Android MVP模式简单易懂的介绍方式 (二)

Android MVP模式简单易懂的介绍方式 (三)

最近正在研究Android的MVP模式。看了很多文章,基本上都是长篇大论,一堆理论。但这里,我们不从理论出发,我们从最最原始实用的介绍出发。那么,这里我默认大家都是有基本的MVP理论知识的,如果没有,可以稍微看下MVP的基本理论。当然,不看基本理论,对于阅读本文也是没有障碍的。这里我们只需要知道一个最最核心的理论:

MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。

这个理论,看起来狠抽象是吧,简单的来说,就是把Activity的逻辑抽离出来,让Activity更加简洁,并且逻辑可复用。MVP其实处理的就是这么一回事。如果有在网上找过MVP的文章,相信大家都看过,很多都是用登陆来做Demo并加以介绍。本文一样,但是本文会从实际思路出发,一步一步带领大家了解MVP。

首先,看看我们的项目结构把。分包这个没啥好说的,就是根据MVP的文件夹划分,这个没有强制规定。可以根据自己的喜好分。然后,这里只是为了方便大家对项目整体了解,才第一步挂出项目结构。其实,实际开发种,我们应该从需求分析出发。

 

那么现在我们就从需求分析,一步一步将整个目录搭建起来。
首先,我们的目的用MVP做一个登陆模块。那么我们先从数据出发,登陆需要什么呢?账号,密码,同时还需要验证账号密码的正确性。因此,我们需要一个model接口,这个接口需要拥有拿到账号,拿到密码,验证账号密码的方法。因此,得到下面这个接口。

public interface IUser {//拿到账号
    String getName();//拿到用户名
    String getPassword();//验证登陆int checkUserValidity();
}

那么既然有了接口,那必须要有人来实现他对吧。因此,我们需要在写一个model类来实现这个接口。这个类除了实现接口的所有方法,为了方便待会使用,我们还需要给他一个构造方法。那么,来到这一步,Model也就完成了。我们将登陆验证的判断逻辑放到了Model中。这样,验证登陆的逻辑也独立开来无关Activity了。为了避免篇幅过长,接下来将在下一篇文章中介绍下一步操作。Android MVP模式简单易懂的介绍方式 (二)

public class UserModel implements IUser {private String name;private String passwd;public UserModel(String name, String passwd) {this.name = name;this.passwd = passwd;}@Overridepublic String getName() {return name;}@Overridepublic String getPassword() {return passwd;}@Overridepublic int checkUserValidity() {//这里其实就是对登陆进行判断。其实就是对数据进行处理判断,一般我们写在Activity里面。写在这里不久又给Activity减负了嘛。if (!name.equals("admin")) {//用户名错误return -1;}if (!passwd.equals("123456")) {//密码错误return -2;}if (name.equals("admin") && passwd.equals("123456")) {//登陆正确return 1;}return 0;}
}

转载于:https://www.cnblogs.com/linfenghp/p/9702548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么?TTL信号也能高速稳定传输100m+?是的,你没有听错,量产电路推荐!

作者:周工,排版:晓宇微信公众号:芯片之家(ID:chiphome-dy)TTL传输100米,是不是很惊讶?早就看透了你的心思。传输100米,干嘛不用差分信号?就知道你…

学习:java设计模式—工厂模式

一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系…

python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...

ps1aniuge2018-10-09 15:10:51 08:00linux 版 powershell,管理员权限运行 Install-Module winscp 即可。[测试通过的脚本例子]#----------------------------#用户输入部分$本地文件_路径 d:\$本地文件_文件名 a1.txt$本地文件_绝对路径名 join-path -Path $本地…

the params of sys aud mod req msgs from TV

sys aud mode req msg sent from TV to AMP has a param of PA of src dev, while sys aud mode req msg sent from TV to AMP hasnt any param: aud sys mod request from TV: sys aud mod req(off) from TV: 转载于:https://www.cnblogs.com/aspirs/p/9708831.html

一定要坚强

想写这篇文章的时候,是因为确实知道发生了一些事情。我应该没有跟大家说过一件事情,我在TCL的时候,因为一件很不爽的事情,跟同事差点打架了,起因是因为睡觉的时候,他一直在打呼噜,然后我晚上我根…

读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号

单引号与双引号我们知道双引号引起来的都是字符串常量,单引号引起来的都是字符常量。比如:‘a’和“a”完全不一样,在内存里前者占1个byte,后者占2个byte。1,‘1‘,“1”。第一个是常数,32位系统…

致驱动工程师的一封信

引言 作为一个算是合格的驱动工程师,总是有很多话想说。代码看的多了总是有些小感悟。可能是吧。那就总结一下自己看的代码的一些感悟和技巧。如何利用你看的这些代码?如何体现在工作的调试中。作为驱动工程师,主要的工作就是移植各种驱动&am…

我的博客搭建(3)

hexo生成工程文件介绍 hexo插件 主题yilia 默认目录结构 具体参考 |--.deploy |--public |--scaffolds |--source |--themes |--_config.yml |--package.json .deploy :部署到GitHub上的内容目录public:输出的静态网页内容目录scaffolds:layo…

alios是安卓吗_【讨论】YUNOS到底是不是Android?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼最近听朋友说,阿里巴巴集团,自己成功研发了一个系统,并且世界装机占有量排名第三,我当时很震惊,这么大的新闻,作为一个从业者我竟然不知道,然后我就…

Oracle 10.2.0.4和10.2.0.5 中 OEM bug 8350262

一. Bug 问题表现 2011年安装Oracle 10.2.0.4 和10.2.0.5 版本时,在配置OEM的时候会报错。 忽略这个错误后,DB 可以成功创建或者升级。 MOS 上关于这个bug的说明,参考:[ID 1222603.1] 该bug 的表现为DBCA和DBUA 配置失败&#xff…

C语言不调用库函数画直线

昨天写了一个代码,使用C语言画三角形,既然写了那个,那就继续画一条直线,这个也很有意思。C语言不调用库函数画一个三角形直线的方程是如下图所示— — 斜率的范围(-∞,∞)既然知道公式了,我们就直接上代码吧&#xff0…

Shell教程

shell编程 shell历史执行脚本基本语法 变量文件名代换Globbing命令代换算术代换转义字符单引号双引号Shell脚本语法 条件测试条件分支 ifthenelifelseficaseesac循环 fordodonewhiledodonebreak和continue位置参数和特殊变量输入输出 echo管道tee文件重定向函数Shell脚本调试方…

澄海口袋机器人_汕头澄海三名11岁小学生发明功夫茶机器人

“工夫茶机器人”由三个11岁的小学生发明。“工夫茶机器人”大洋网讯 潮汕人爱喝工夫茶,可冲泡工夫茶容易烫手且费时,如何优雅地泡一杯工夫茶?来自汕头澄海的三名11岁小学生给出了自己的答案:只要按下按钮或下达声控指令&#xff…

POS机C井例子代码(2)

详细代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Text; namespace POS机C井例子代码 { /// <summary> /// Form2 的摘要说明。 /// </summa…

尘埃落定,初心未改——一个大学生的电子大赛感悟

大家好&#xff0c;我是写代码的篮球球痴这篇文章是一位参加电子竞赛的总结文章&#xff0c;分享给大家。也欢迎更多的读者给我投稿&#xff0c;采纳后会有礼物赠送。01.一腔热血定乾坤2020年&#xff0c;怀着一腔热血踏入大学。比起高中那个被学业充斥的时代&#xff0c;迈入大…

ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...

&#xfeff;最近项目需要&#xff0c;实现文本的词频分析&#xff0c;折腾了几天才完成任务&#xff0c;有点成就感&#xff0c;最后整理总结一下这部分的内容&#xff0c;希望更多同僚受益。一.使用前准备环境&#xff1a;Python3.6安装结巴&#xff1a;pip install jiaba下载…

基于智能手机Android平台音乐播放器全程开发实战

基于android开发的智能手机平台的应用越来越多,目前也是一块比较热门的技术,本项目为基于android系统的音乐播放器项目,学习本项目的目的是为了让学员尽快掌握android领域的小应用的开发.项目从需求分析起步,完善了音乐播放器的所有功能,课程讲解深刻。 项目描述: 1、支持音乐在…

RAC集群故障恢复CRS-4047,CRS-4000

知识点&#xff1a; RAC是real application clusters的缩写&#xff0c;译为“实时应用集群”&#xff0c;是高可用性的一种&#xff0c;也是Oracle数据库支持网格计算环境的核心技术。 主要作用&#xff1a; (1)多节点负载均衡; (2)提供高可用&#xff1a;故障容错和无缝切换功…

急用物料怎么办???

咱们硬件工程师&#xff0c;一般都属于研发部。既然是研发&#xff0c;那么就具有一点研究的性质&#xff0c;有可能遇到预想不到的问题&#xff0c;在解决这些问题的过程中&#xff0c;难免会突然要用到一些器件。这时问题就来了&#xff0c;公司没有这个器件啊&#xff0c;但…

python 分位数计算代码_Python数据分析第十一节 数据运算

数据运算不仅仅是加减乘除的基本运算&#xff0c;还要包括数据的比较&#xff0c;汇总和相关性的计算等等&#xff0c;这一节我们将计算的问题帮大家汇总出来&#xff5e;目录一. 加减乘除运算二. 比较运算三. 汇总运算count 非空值计数sum 求和其他(均值&#xff0c;最大最小值…