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;
}
@Override
public String getName() {
return name;
}
@Override
public String getPassword() {
return passwd;
}
@Override
public 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;
}
}
Android MVP模式简单易懂的介绍方式 (一)的更多相关文章
- Android MVP模式 简单易懂的介绍方式
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200
- Android MVP模式简单易懂的介绍方式 (三)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 讲完M和P,接下来就要讲V了.View ...
- Android MVP模式简单易懂的介绍方式 (二)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 上一篇文章我们介绍完了Model的创建 ...
- MVP 模式简单易懂的介绍方式
为什么用Android MVP 设计模式? 当项目越来越庞大.复杂,参与的研发人员越来越多的时候,MVP 模式 的优势就充分显示出来了. MVP 模式是 MVC 模式在 Android 上的一种变体, ...
- android MVP模式简单介绍
原文 http://zhengxiaopeng.com/2015/02/06/Android%E4%B8%AD%E7%9A%84MVP/ 前言 MVP作为一种MVC的演化版本在Android开发中受到 ...
- Android MVP模式简单介绍:以一个登陆流程为例
老的项目用的MVC的模式,最近完成了全部重构成MVP模式的工作,虽然比较麻烦,好处是代码逻辑更加清楚.简洁,流程更加清晰,对于后续版本迭代维护都挺方便.对于一些想要学习MVP模式的同学来讲,百度搜出来 ...
- Android MVP模式
转自http://segmentfault.com/blogs,转载请注明出处Android MVP Pattern Android MVP模式\[1\]也不是什么新鲜的东西了,我在自己的项目里也普遍 ...
- android MVP模式介绍与实战
android MVP模式介绍与实战 描述 MVP模式是什么?MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数 ...
- Android架构篇--MVP模式的介绍篇
摘要: 在MVVM成熟之前MVP模式在Android上有被神化的趋势,笔者曾经在商业项目中从零开始大规模采用过MVP模式对项目进行开发.在使用MVP模式进行开发的时候发现项目的结构模式对开发是有一定的 ...
随机推荐
- PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性
1. PHP5.3中的新特性 1.1 支持命名空间(namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,可以用命名空间防止代码的冲突,命名空间的分隔符为 ...
- 实用且堪称神器的Chrome插件推荐
前言 相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多强大好用的扩展程序(Extensions).最近为了更好 ...
- 【DUBBO】dubbo的LoadBalance接口
LoadBalance负载均衡, 负责从多个 Invokers中选出具体的一个Invoker用于本次调用,调用过程中包含了负载均衡的算法,调用失败后需要重新选择 --->类注解@SPI说明可以基 ...
- YUYV&YV12&mtk6763
stImgInOut.stImgInfo.enImageType = UV_IMAGE_TYPE_YV12; stImgInOut.stImgInfo.as32Pitch[0] = pStreamIm ...
- 查找大文件 & 索引节点(inode)爆满 解决办法
经常遇到磁盘满或者文件节点满的情况,整理如下 查找大文件 查找超过某个大小的文件, 如1G find . -type f -size +1G 查找文件大小的时候,现实文件属性 find . -type ...
- java 短链接生成
package shorurl; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang. ...
- bzoj1588[HNOI2002]营业额统计——双向链表
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1588 简单Splay.但用双向链表做.很好的思路. 1.(离线)按值排序,记下pre和nxt ...
- 5.Python使用最新爬虫工具requests-html
1.安装,在命令行输入:pip install requests-html,安装成功后,在Pycharm引入即可. 2.代码如下所示: from requests_html import HTMLSe ...
- 关于tab的切换之共用html页面,而引发的页面跳转错乱问题
在一个项目中的同一个模块中,有多个tab(并且多个tab对应的页面结构完全一样),tab的每次切换,不同tab调用不同的接口,利用一个switch进行判断,根据当前的类型去调用不同的接口,返回不同数据 ...
- Makefile编写 五 隐含规则
隐含规则———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj] ...