首页 > 系统 > Android > 正文

Android之MVP模式实现登录和网络数据加载

2019-11-09 17:36:19
字体:
来源:转载
供稿:网友

MVP简介

相信大家对 MVC 都是比较熟悉了:M-Model-模型、V-View-视图、C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的MVP所对应的意义:M-Model-模型、V-View-视图、P-PResenter-表示器。

MVC详见博客: Android之MVC模式的使用

Model

Model 是用户界面需要显示数据的抽象,也可以理解为从业务数据(结果)那里到用户界面的抽象。

View

视图这一层体现的很轻薄,负责显示数据、提供友好界面跟用户交互就行。MVP下Activity和Fragment体现在了这一层,Activity一般也就做加载UI视图、设置监听再交由Presenter处理的一些工作,所以也就需要持有相应Presenter的引用。

Presenter

Presenter这一层处理着程序各种逻辑的分发,收到View层UI上的反馈命令、定时命令、系统命令等指令后分发处理逻辑交由业务层做具体的业务操作,然后将得到的 Model 给 View 显示。

MVCMVP的区别

在 MVC 中:

View 可以与 Model 直接交互;Controller 可以被多个 View 共享;Controller 可以决定显示哪个 View 。

在 MVP 中:

View 不直接与 Model 交互;Presenter 与 View 通过接口来交互,更有利于添加单元测试;通常 View 与 Presenter 是一对一的,但复杂的 View 可能绑定多个 Presenter 来处理;Presenter 也可以直接进行 View 上的渲染。

模仿登录案例:(demo中包含登录和网络数据请求)

model

public class ModelSignIn implements ILoginSignIn { @Override public void onSignIn(String name, String pwd, IOnSetListenter listenter) { if (name.isEmpty()) { if (listenter!=null) { listenter.onError("输入用户名为空"); return; } } if (pwd.isEmpty()) { if (listenter!=null) { listenter.onError("输入密码为空"); return; } } if(name.equals("dickyqie") && pwd.equals("123456")) { if (listenter!=null) { listenter.onError("登录成功"); return; } }else{ if (listenter!=null) { listenter.onError("登录失败"); return; } } }}

presenter

<uses-permission android:name="android.permission.INTERNET"/>

由于代码太多,完整代码未给出,源码直接下载即可

源码点击下载


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表