zoukankan      html  css  js  c++  java
  • 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;
        }
    
        @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;
        }
    }
  • 相关阅读:
    Id vs Instancetype
    【转】为什么要走出你的心理“舒适区”
    【转】深入浅出 iOS 之生命周期
    【转】Objective-C类初始化:load与initialize
    【转】Cocoapod 的安装和使用
    非对称加密回顾
    iOS中 Proxy和的delegate区别
    IOS 对JSON解析的要求
    内存对齐规则
    KVO 的进一步理解
  • 原文地址:https://www.cnblogs.com/linfenghp/p/9702548.html
Copyright © 2011-2022 走看看