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模式进行开发的时候发现项目的结构模式对开发是有一定的 ...
随机推荐
- Infinite size of Hypothesis set and growth function
We want: 根据Hoeffding: 但是M是无穷大的,是否可以找到一个有穷大的m_H去替代无穷大的M? 思考:M从何而来。 Hset里有M个h,对于每个Data,只要存在一个h会造成Bad,即 ...
- 解决 git 错误 error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 11
环境 Windows 7 . git push 时出现错误,无法提交代码到远程仓库. Counting objects: , done. Delta compression using up to t ...
- IOS UIView 放大缩小
/创建缩小了的视图myWeiBoImageVC = [[UIViewController alloc] init];myWeiBoImageVC.view.clipsToBounds = YES;my ...
- android 和主线程有关的小问题
1.在android 中 HTTP请求被不允许在主线程中执行,否则会抛出异常.如果请求时间过长,阻塞UI线程是一个非常差的体验之前,刚开始开发遇到这个问题,每次app运行到最后,发送网络请求就自己崩溃 ...
- 《DSP using MATLAB》示例Example 6.9
代码: % All-Pole IIR filter to Lattice structure filter a = [1, 13/24, 5/8, 1/3]; K = dir2latc(a) % To ...
- LeetCode 760. Find Anagram Mappings
原题链接在这里:https://leetcode.com/problems/find-anagram-mappings/description/ 题目: Given two lists Aand B, ...
- hessian协议原理
Hessian 原理分析 一. 远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . t ...
- python 开始学习
"人生苦短, 我用python" ---------以此敬意伟大的生产力创造!
- gprof的使用介绍
转于:http://blog.chinaunix.net/uid-25194149-id-3215487.html #不知道这是在哪里找的了,感谢各位~ 性能分析工具gprof介绍Ver:1.0 目录 ...
- springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...