在寫完MVP模式(一)后,總覺得難以理解尘应,并且感覺不應(yīng)該在model層操作業(yè)務(wù)邏輯
下面同樣以用戶登陸為例,把model的業(yè)務(wù)實(shí)現(xiàn)交給Presenter操作
創(chuàng)建model
public class UserInfo {
public String account;
public String pwd;
}
創(chuàng)建view與model邏輯實(shí)現(xiàn)Presenter的接口
public class UserLoginApi {
//view接收結(jié)果
public interface View{
void onLoginStar();
void onLoginEnd();
void onSuccess();
void onFail();
}
//model的邏輯實(shí)現(xiàn),交給Presenter
public interface Presenter {
void login();
}
}
創(chuàng)建Presenter實(shí)現(xiàn)登陸用戶齐佳,并把結(jié)果返回給view
public class UserLoginPresenter implements UserLoginApi.Presenter {
private UserLoginApi.View view;
private UserInfo userInfo;
public UserLoginPresenter(UserLoginApi.View view,UserInfo userInfo){
this.view = view;
this.userInfo = userInfo;
}
@Override
public void login() {
//模擬登陸
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
view.onLoginStar();
if (TextUtils.isEmpty(userInfo.account)||TextUtils.isEmpty(userInfo.pwd)){
return;
}
int i =new Random().nextInt(1);
if (i==0){
view.onSuccess();
view.onLoginEnd();
}else {
view.onFail();
view.onLoginEnd();
}
}
},2000L);
}
}
View層
public class LoginActivity extends Activity implements UserLoginApi.View{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new UserLoginPresenter(this,new UserInfo()).login();
}
@Override
public void onLoginStar() {
}
@Override
public void onLoginEnd() {
}
@Override
public void onSuccess() {
}
@Override
public void onFail() {
}
}