所谓MVP(Model-View-Presenter)模式。是将APP的结构分为三层:

view - UI显示层

view 层主要负责:

  1. 提供UI交互
  2. 在presenter的控制下修改UI。
  3. 将业务事件交由presenter处理。
    注意. View层不存储数据,不与Model层交互。

presenter - 逻辑处理层

presenter 层主要负责:

  1. 对UI的各种业务事件进行相应处理。也许是与Model层交互,也许自己进行一些计算,也许控制后台Task,Servic
  2. 对各种订阅事件进行响应,修改UI。
  3. 临时存储页面相关数据。
    注意. Presenter内不出现View引用。

model - 数据层

model层主要负责:

  1. 从网络,数据库,文件,传感器,第三方等数据源读写数据。
  2. 对外部的数据类型进行解析转换为APP内部数据交由上层处理。
  3. 对数据的临时存储,管理,协调上层数据请求。

如图示,里面的activity,presenter,model均为例子:

mvp

将复杂的功能分割为各层内的小问题。各层内功能单一。这样易于功能修改拓展与Debug。
解耦的设计,独立的模块,更有利于分工开发与测试。

简单例子如下

aaarticlea/png;base64,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" alt="" />

UserBean.java

package com.example.mvptest.com.example.bean;

/**
* Created by Administrator on 2016/6/2.
*/
public class UserBean {
private String mobile;
private String userpwd; public UserBean(String mobile, String userpwd) {
this.mobile = mobile;
this.userpwd = userpwd;
} public String getMobile() {
return mobile;
} public String getUserpwd() {
return userpwd;
}
}

Model层

IUserModel.java和UserModel.java

public interface IUserModel {

    void setID(int id);
void setMobile(String mobile);
void setUserPwd(String userpwd);
UserBean load(int id);
}
package com.example.mvptest.com.example.model;

import android.util.SparseArray;

import com.example.mvptest.com.example.bean.UserBean;

/**
* Created by Administrator on 2016/6/2.
*/
public class UserModel implements IUserModel {
private String usermobile;
private String userPwd;
private int mID;
private SparseArray<UserBean> mUserArray = new SparseArray<UserBean>(); @Override
public void setID(int id) {
mID = id;
} @Override
public void setMobile(String mobile) {
usermobile = mobile;
} @Override
public void setUserPwd(String userpwd) {
userPwd = userpwd;
UserBean userBean = new UserBean(usermobile, userpwd);
mUserArray.append(mID, userBean);
} @Override
public UserBean load(int id) {
mID = id;
UserBean userBean = mUserArray.get(mID, new UserBean("no data", "not data"));
return userBean;
}
}

View层

package com.example.mvptest.com.example.view;

/**
* Created by Administrator on 2016/6/2.
*/
public interface IUserView {
int getID();
String getMobile();
String getUserPwd();
void setMobile(String mobile);
void setUserpwd(String userpwd);
}

Presenter层

package com.example.mvptest.com.example.presenter;

import com.example.mvptest.com.example.bean.UserBean;
import com.example.mvptest.com.example.model.IUserModel;
import com.example.mvptest.com.example.model.UserModel;
import com.example.mvptest.com.example.view.IUserView; /**
* Created by Administrator on 2016/6/2.
*/
public class UserPresenter {
private IUserView mUserView;
private IUserModel mUserModel; public UserPresenter(IUserView mUserView) {
this.mUserView = mUserView;
this.mUserModel = new UserModel();
} public void saveUser(int id, String mobile, String userpwd) {
mUserModel.setID(id);
mUserModel.setMobile(mobile);
mUserModel.setUserPwd(userpwd);
} public void loadUser(int id) {
UserBean user = mUserModel.load(id);
mUserView.setMobile("bb"+user.getMobile());
mUserView.setUserpwd(user.getUserpwd());
}
}

Activity层实现IUserView接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener, IUserView{
private EditText mobileEdt, pwdEdt;
UserPresenter presenter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); findViewById(R.id.save).setOnClickListener(this);
findViewById(R.id.load).setOnClickListener(this); mobileEdt = (EditText) findViewById(R.id.mobile);
pwdEdt = (EditText) findViewById(R.id.passwd); presenter = new UserPresenter(this);
} @Override
public int getID() {
return 3;
} @Override
public String getMobile() {
return mobileEdt.getText().toString();
} @Override
public String getUserPwd() {
return pwdEdt.getText().toString();
} @Override
public void setMobile(String mobile) {
mobileEdt.setText(mobile);
} @Override
public void setUserpwd(String userpwd) {
pwdEdt.setText(userpwd);
} @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.save:
presenter.saveUser(3, getMobile(), getUserPwd());
break;
case R.id.load:
presenter.loadUser(3);
break;
default:
break;
}
}
}

复杂例子:
https://github.com/wenhuaijun/SearchPictureTool

 

MVP快速开发框架的更多相关文章

  1. XDroidMvp 轻量级的Android MVP快速开发框架

    XDroidMvp是XDroidAndroid快速开发框架的MVP版本,其使用方式类似于XDroid,大部分源码也来自XDroid. XDroidMvp主要会有这些特性: 无需写Contract! 无 ...

  2. Android快速开发框架ZBLibrary源码分享

    坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(UI,Data,Listener)以及模板和工具类并规范代码. 封装层级少,简单高效兼容性好.Androi ...

  3. android 快速开发框架

    https://github.com/lipanquan/LPQRapidDevelopmentFramework 依赖LPQLibrary https://github.com/lipanquan/ ...

  4. android悬浮球实现各种功能、快速开发框架、单词、笔记本、应用市场应用等源码

    Android精选源码 悬浮球,实现一键静音,一键锁频,一键截屏等功能 一个Android快速开发框架,MVP架构 Android QQ小红点的实现源码 android一款单词应用完整app源码 an ...

  5. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. CRL快速开发框架系列教程十一(大数据分库分表解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. CRL快速开发框架系列教程十(导出对象结构)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. Reason: Server is in single user mode. Only one administrator can connect at this time

    单击Start→All Programs→Microsoft SQL Server 2008→Configuration Tools→SQL Server Configuration Manager. ...

  2. Java for selenium(webdriver) 环境搭建

    开发环境 1. jdk1.7 2. Eclipse 3. selenium(selenium-java-2.42.2.zip) 将下载下来的 selenium-java-2.42.2.zip 解压, ...

  3. hive中sql解析出对应表和字段的实现

    import java.io.IOException; import java.util.HashMap; import java.util.HashSet; import java.util.Map ...

  4. BI-SqlServer

    一.概述 SqlServer数据仓库 ETL组件 IntegrationService OLAP组件 AnalysisService 报表 ReportingService MDX(查多维数据集用的) ...

  5. [Unix.C]Files and Directories

    stat, fstat, and lstat Functions  本部分讨论的内容主要围绕3个stat函数及其返回值. #include <sys/stat.h> int stat(co ...

  6. ReadingNotes@02-12-2013

    ReadingNotes@02-12-2013 */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Cons ...

  7. 软件缺陷分析方法:ODC

    资料 Orthogonal Defect Classification:简要描述. ODC-5-2.pdf :详细说明了ODC对于缺陷属性分类的描述,以及具体应该怎么划分. ODC-5-2-Exten ...

  8. 软件授权协议有什么作用,例如GPL、Apache License、CDDL、EPL这些协议有什么区别?

    1.授权协议有什么作用:授权协议就是授予你使用或修改软件等权利,由于软件受到著作权保护,未经授权使用即是侵犯著作权,属于违法行为,所以同意或签署软件授权协议是你使用或修改软件的前提条件.既然是授权协议 ...

  9. 事物复制中大项目(Large Article)出问题如何快速修复

    事物日志中如果大的发布项目(Article)出问题了,并且影响了系统的使用,如何快速的解决? 一般的做法是重新用快照或者备份初始化,但是如果出问题的表非常大(上亿的记录,几十GB的数据),使用初始化是 ...

  10. js修改编辑器内容、修改iframe子页内容

    $('#question-stem-uploader').on('click','',function(){ //获取编辑器内容(ke-edit-iframe: 编辑器iframe的classm名称) ...