简单谈谈mvp
M - Model
V -View
P -presenter
这就是mvp模式
以前都是用MVC(模型视图控制器)
一开始的时候相信很多人都有点不太理解mvp
在MVC中
model相当于bean(服务器返回的数据)
View相当于xml视图
controller 相当于(activity)
在activity之中处理请求服务器返回结果进行数据填充
这样会导致Activity过去庞大导致后期维护极为不方便解耦特别困难
MVP与mvc最大的区别就是复用性跟解耦
MVP:
Model:
是负责向服务器发送请求
而不是再只是单纯的一个bean实体类而已
//params代表参数
//listener代表成功或者失败后回调给调用这个Model的Presenter
@Override
public void LoginModel(String params, final ResponseListener<UserBean> listener) {
//发送请求
String Url = HttpUrl+params;
//最基本发送请求事例 listener中是给外面处理成功失败后应该做什么事情
http.executeGetRequest(Url, head, listener)
View:
在外部定义接口然后让Activity实现这个接口
去处理请求成功和失败对页面数据进行修改
public interface ILoginView {
//成功返回的实体类对象
void onSuccess(UserBean bean);
//失败返回提示
void onFail(String error);
Presenter:
MOdel和View的中间者
构建Model与View之中的桥梁
在Presenter拥有两个对象
1.model的实现类
2.实现View接口的类(一般是Activity)
public LoginPresenter(IAddPraiseView view) {
mIAddPraiseView = view;
mAddPraiseModel = new loginModel();
}
public void login(String params) {
mLoginModel.loginModel(params, new LoginListener() {
@Override
public void onSuccess(LoginBean loginBean) {
if (!Utils.isNull(loginBean) {
return;
}
if (loginBean.code.equals("succeed")) {
// 根据不同结果对view进行通知
mILoginView.loginSuccess(user);
} else{
mILoginView.loginFailure(loginBean.tmessage);
}
}
@Override
public void onFailure(String result) {
// 根据不同结果对view进行通知
mILoginView.loginFailure("网络不给力,请重试!", false);
}
@Override
public void parseError() {
mILoginView.showParseError();
}
});
}
因为activity中实现了View接口所以在activity中实现请求成功后改变数据源做ui界面改变