MVP快速开发框架
所谓MVP(Model-View-Presenter)模式。是将APP的结构分为三层:
view - UI显示层
view 层主要负责:
- 提供UI交互
- 在presenter的控制下修改UI。
- 将业务事件交由presenter处理。
注意. View层不存储数据,不与Model层交互。
presenter - 逻辑处理层
presenter 层主要负责:
- 对UI的各种业务事件进行相应处理。也许是与Model层交互,也许自己进行一些计算,也许控制后台Task,Servic
- 对各种订阅事件进行响应,修改UI。
- 临时存储页面相关数据。
注意. Presenter内不出现View引用。
model - 数据层
model层主要负责:
- 从网络,数据库,文件,传感器,第三方等数据源读写数据。
- 对外部的数据类型进行解析转换为APP内部数据交由上层处理。
- 对数据的临时存储,管理,协调上层数据请求。
如图示,里面的activity,presenter,model均为例子:
将复杂的功能分割为各层内的小问题。各层内功能单一。这样易于功能修改拓展与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快速开发框架的更多相关文章
- XDroidMvp 轻量级的Android MVP快速开发框架
XDroidMvp是XDroidAndroid快速开发框架的MVP版本,其使用方式类似于XDroid,大部分源码也来自XDroid. XDroidMvp主要会有这些特性: 无需写Contract! 无 ...
- Android快速开发框架ZBLibrary源码分享
坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(UI,Data,Listener)以及模板和工具类并规范代码. 封装层级少,简单高效兼容性好.Androi ...
- android 快速开发框架
https://github.com/lipanquan/LPQRapidDevelopmentFramework 依赖LPQLibrary https://github.com/lipanquan/ ...
- android悬浮球实现各种功能、快速开发框架、单词、笔记本、应用市场应用等源码
Android精选源码 悬浮球,实现一键静音,一键锁频,一键截屏等功能 一个Android快速开发框架,MVP架构 Android QQ小红点的实现源码 android一款单词应用完整app源码 an ...
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十(导出对象结构)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- bzoj3875
悲伤地回忆,当初写了一个作死的算法爆零了为什么不好好写暴力呢……显然设w[i]表示彻底干掉这个怪物的代价注意发现这里的转移具有后效性,但是干掉每个怪物的最优值是一定的我们用spfa来转移,详见那篇sp ...
- linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...
- ASP.NET MVC 中将FormCollection与实体间转换方法 (转)
将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. [HttpPost] public ActionResul ...
- DATEDIFF()(转)
SQL DATEDIFF 函数 Leave a reply SQL DATEDIFF() 函数用来返回2个时间的差.这个函数在SQL Server和MySQL中都有,但语法上有不同. SQL CASE ...
- Java学习——数据类型【2】
1. 对象与类 对象:类的一个实例,有状态和行为. 类:一个模板,描述一类对象的行状态和行为. 2. 类可以包含的变量 类型 局部变量 成员变量 类变量(静态变量) 定义位置 方法.或语句块中 类中, ...
- oracle Imp和exp以及导入常见的错误
一 1) 数据库对象已经存在 一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等; 数据库对象已经存在, 按缺省的imp参数, 则会导入失败 如果用了参数ignore=y ...
- PHP文件操作常用函数总结
一 .解析路径: 1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. eg: $ ...
- Oracle DB 自动管理共享内存
• 启用Oracle Enterprise Manager (EM) 内存参数 • 设置自动优化的内存参数 • 使用手动优化的SGA 参数覆盖最小大小 • 使用SGA Advisor 设置SGA_TA ...
- JAVA从零单排之前因
本人,男,21岁,普通院校本科,计算机专业.大学之前对计算机编程没有一点涉及.大学学计算机专业也是个偶然.因为当初高考的成绩不好,结果都是我父亲帮我报的学校和专业. 上了大学之后,大一都是在新奇中度过 ...
- 【转】Cannot change version of project facet Dynamic Web Module to 3.1 (Eclipse Maven唯一解决方案)
If you want to use version 3.1 you need to use the following schema: http://xmlns.jcp.org/xml/ns/jav ...