MVP初级整理
2016-03-15 10:19
127 查看
每次看到别人的MVP模式,总感觉逼格很高,所以自己就尝试的看看学习下,不过好多都是模板的样式,而且看的时候感觉很深奥,但是弄了一个简单demo之后发现,其实TMD就是一群懒鬼想要让代码看起来舒服点,复用性高点而已,节约时间干其他的事,Holy shit,怪我年轻。(代码是从学习的demo中弄来的,要写也很简单,我很懒的···)
MVP:
M:model,分为2个。
一个是需要实现的方法Imodel,方法主要用于对UI界面数据的操作或者说渲染,或者说查询那些操作。
梨子:
public
interfaceIUserModel {
void setID(int id);
void setFirstName(StringfirstName);
void setLastName(StringlastName);
UserBeanload(intid);
}
一个是实现类Model,把可能传进来的数据进行具体的操作:
public
classUserModel implementsIUserModel {
private String
mFristName;
private String
mLastName;
private
int mID;
privateSparseArray<UserBean>
mUsererArray = newSparseArray<UserBean>();
@Override
public
void setID(int id) {
mID = id;
}
@Override
public
void setFirstName(StringfirstName) {
// TODO Auto-generated method stub
mFristName = firstName;
}
@Override
public
void setLastName(StringlastName) {
mLastName = lastName;
UserBeanUserBean = newUserBean(mFristName,mLastName);
mUsererArray.append(mID, UserBean);
}
@Override
public
UserBean load(int id) {
mID = id;
UserBeanuserBean = mUsererArray.get(mID,
new UserBean("not found",
"not found"));
return userBean;
}
}
V:view,视图,与其说是视图,倒不如说是个接口类,主要用于实现里面的方法,它的作用很简单,把可能需要用的数据全部得到;
public
interfaceIUserView {
int getID();
StringgetFristName();
StringgetLastName();
void setFirstName(StringfirstName);
void setLastName(StringlastName);
}
So,implementsIUserView之后只需要实现就可以了。
那么关键来了:
P:present,传说跟control一样的控制,对传进来的对象和数据进行操作:
public
classUserPresent {
private IUserView
mUserView;
private IUserModel
mUserModel;
public UserPresent(IUserViewview) {
mUserView = view;
mUserModel = new UserModel();
}
public
void saveUser(int id, String firstName,String lastName) {
mUserModel.setID(id);
mUserModel.setFirstName(firstName);
mUserModel.setLastName(lastName);
Log.d("YOU",
"保存数据");
}
public
void loadUser(int id) {
UserBeanuser = mUserModel.load(id);
mUserView.setFirstName(user.getFirstName());
mUserView.setLastName(user.getLastName());
Log.d("YOU",
"加载数据");
}
}
关键点看到没有,初始化的时候传进来的IUserViewview,
还有UserModel的初始化。
明白了没?没明白?!没错,就是这样,UserModel只提供方法,其他的什么都不做,要做也是UserPresent来做,出事了别找Model!
而IUserView 用来干嘛的?就是在你数据被处理完了之后进行渲染或者设置数据用的。
Present里面就是传递一个需要处理的view,初始化方法类model,然后在里面提供方法,用model加工传进来的数据或者提供方法将数据设置给view。
那么present在哪里初始化,有怎么做呢
@Override
protected
void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUserPresenter =
new UserPresent(this);
··········
}
就这么简单。
MVP,方法归方法(M),UI归UI(V),P只是一个操作者,因为用户实在UI界面进行事件的操作,所以P要在UI活动界面中初始化,然后将需要处理的V对象传入到P对象内部,而P对象内部新建或者说初始化M对象,P对象在V中通过自定义方法,将需要的数据传入进来,然后内部方法中会就将数据通过M处理好之后,交给V去设置或者显示。
MVP:
M:model,分为2个。
一个是需要实现的方法Imodel,方法主要用于对UI界面数据的操作或者说渲染,或者说查询那些操作。
梨子:
public
interfaceIUserModel {
void setID(int id);
void setFirstName(StringfirstName);
void setLastName(StringlastName);
UserBeanload(intid);
}
一个是实现类Model,把可能传进来的数据进行具体的操作:
public
classUserModel implementsIUserModel {
private String
mFristName;
private String
mLastName;
private
int mID;
privateSparseArray<UserBean>
mUsererArray = newSparseArray<UserBean>();
@Override
public
void setID(int id) {
mID = id;
}
@Override
public
void setFirstName(StringfirstName) {
// TODO Auto-generated method stub
mFristName = firstName;
}
@Override
public
void setLastName(StringlastName) {
mLastName = lastName;
UserBeanUserBean = newUserBean(mFristName,mLastName);
mUsererArray.append(mID, UserBean);
}
@Override
public
UserBean load(int id) {
mID = id;
UserBeanuserBean = mUsererArray.get(mID,
new UserBean("not found",
"not found"));
return userBean;
}
}
V:view,视图,与其说是视图,倒不如说是个接口类,主要用于实现里面的方法,它的作用很简单,把可能需要用的数据全部得到;
public
interfaceIUserView {
int getID();
StringgetFristName();
StringgetLastName();
void setFirstName(StringfirstName);
void setLastName(StringlastName);
}
So,implementsIUserView之后只需要实现就可以了。
那么关键来了:
P:present,传说跟control一样的控制,对传进来的对象和数据进行操作:
public
classUserPresent {
private IUserView
mUserView;
private IUserModel
mUserModel;
public UserPresent(IUserViewview) {
mUserView = view;
mUserModel = new UserModel();
}
public
void saveUser(int id, String firstName,String lastName) {
mUserModel.setID(id);
mUserModel.setFirstName(firstName);
mUserModel.setLastName(lastName);
Log.d("YOU",
"保存数据");
}
public
void loadUser(int id) {
UserBeanuser = mUserModel.load(id);
mUserView.setFirstName(user.getFirstName());
mUserView.setLastName(user.getLastName());
Log.d("YOU",
"加载数据");
}
}
关键点看到没有,初始化的时候传进来的IUserViewview,
还有UserModel的初始化。
明白了没?没明白?!没错,就是这样,UserModel只提供方法,其他的什么都不做,要做也是UserPresent来做,出事了别找Model!
而IUserView 用来干嘛的?就是在你数据被处理完了之后进行渲染或者设置数据用的。
Present里面就是传递一个需要处理的view,初始化方法类model,然后在里面提供方法,用model加工传进来的数据或者提供方法将数据设置给view。
那么present在哪里初始化,有怎么做呢
@Override
protected
void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUserPresenter =
new UserPresent(this);
··········
}
就这么简单。
MVP,方法归方法(M),UI归UI(V),P只是一个操作者,因为用户实在UI界面进行事件的操作,所以P要在UI活动界面中初始化,然后将需要处理的V对象传入到P对象内部,而P对象内部新建或者说初始化M对象,P对象在V中通过自定义方法,将需要的数据传入进来,然后内部方法中会就将数据通过M处理好之后,交给V去设置或者显示。
相关文章推荐
- hdoj 1799 循环多少次?(数学公式)
- Android 生成文字图片验证码
- 193 - Valid Phone Numbers
- datasorttable表格
- USG 5160 L2tp 配置实例
- Linux下usb驱动调用流程
- 17.3 OJ内存2G限制 error C2148: 数组的总大小不得超过0x7fffffff字节
- 从输入网址到显示网页的全过程分析
- libxml 添加到工程
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- 如何进行rails性能优化
- java开发--struts2 标签库使用
- 新装cent os 没有vim的安装方法
- 【OpenCL】Coalescing Memory Accesses
- SAX
- tar.gz包安装jdk-8u25的方法和注意的地方(下载历史版本JDK的方法)
- JAVA读取FTP文件并转为字符串
- Go语言以匿名组合的方式实现继承
- JAVA 多态 由浅及深介绍
- 面试ruby on rails时会遇见的哪些梗