簡(jiǎn)單談?wù)刴vp
M - Model
V -View
P -presenter
這就是mvp模式
以前都是用MVC(模型視圖控制器)
一開始的時(shí)候相信很多人都有點(diǎn)不太理解mvp
在MVC中
model相當(dāng)于bean(服務(wù)器返回的數(shù)據(jù))
View相當(dāng)于xml視圖
controller 相當(dāng)于(activity)
在activity之中處理請(qǐng)求服務(wù)器返回結(jié)果進(jìn)行數(shù)據(jù)填充
這樣會(huì)導(dǎo)致Activity過去龐大導(dǎo)致后期維護(hù)極為不方便解耦特別困難
MVP與mvc最大的區(qū)別就是復(fù)用性跟解耦
MVP:
Model:
是負(fù)責(zé)向服務(wù)器發(fā)送請(qǐng)求
而不是再只是單純的一個(gè)bean實(shí)體類而已
//params代表參數(shù)
//listener代表成功或者失敗后回調(diào)給調(diào)用這個(gè)Model的Presenter
@Override
public void LoginModel(String params, final ResponseListener<UserBean> listener) {
//發(fā)送請(qǐng)求
String Url = HttpUrl+params;
//最基本發(fā)送請(qǐng)求事例 listener中是給外面處理成功失敗后應(yīng)該做什么事情
http.executeGetRequest(Url, head, listener)
View:
在外部定義接口然后讓Activity實(shí)現(xiàn)這個(gè)接口
去處理請(qǐng)求成功和失敗對(duì)頁面數(shù)據(jù)進(jìn)行修改
public interface ILoginView {
//成功返回的實(shí)體類對(duì)象
void onSuccess(UserBean bean);
//失敗返回提示
void onFail(String error);
Presenter:
MOdel和View的中間者
構(gòu)建Model與View之中的橋梁
在Presenter擁有兩個(gè)對(duì)象
1.model的實(shí)現(xiàn)類
2.實(shí)現(xiàn)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")) {
// 根據(jù)不同結(jié)果對(duì)view進(jìn)行通知
mILoginView.loginSuccess(user);
} else{
mILoginView.loginFailure(loginBean.tmessage);
}
}
@Override
public void onFailure(String result) {
// 根據(jù)不同結(jié)果對(duì)view進(jìn)行通知
mILoginView.loginFailure("網(wǎng)絡(luò)不給力卫枝,請(qǐng)重試荧降!", false);
}
@Override
public void parseError() {
mILoginView.showParseError();
}
});
}
因?yàn)閍ctivity中實(shí)現(xiàn)了View接口所以在activity中實(shí)現(xiàn)請(qǐng)求成功后改變數(shù)據(jù)源做ui界面改變
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者