我們的場(chǎng)景是大概實(shí)現(xiàn)一個(gè)基本的登錄請(qǐng)求魄缚,然后將數(shù)據(jù)返回給View層
一宏浩,Model 負(fù)責(zé)數(shù)據(jù)的獲取,并返回給Presenter
獲取數(shù)據(jù)的Model
public class LoginRequest {
public String username;
public String password;
public void queryData(LoginView view) {
LoginResult result = new LoginResult();
result.isSucess = 1;
result.result = "成功啦";
view.onLoginResult(result);
}
}
二吐咳,View 負(fù)責(zé)數(shù)據(jù)的展示等等
1会宪,首先是定義一個(gè)BaseView肖卧,其實(shí)就是一個(gè)空接口,代表一個(gè)View對(duì)象
public interface IBaseView {
}
2掸鹅,定義一個(gè)登錄View
public interface LoginView<E> extends IBaseView {
void onLoginResult(E result);
}
3喜命,具體做業(yè)務(wù)邏輯的對(duì)象,實(shí)現(xiàn)LoginView
public class LoginActivity extends AppCompatActivity implements LoginView<LoginResult> {
private LoginPresenter mLoginPersenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mLoginPersenter = new LoginPresenter(this);
mLoginPersenter.attach(this);
findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LoginRequest r = new LoginRequest();
r.username = "user";
r.password = "password";
mLoginPersenter.loginRequest(r);
}
});
}
@Override
public void onLoginResult(LoginResult result) {
if(result.isSucess == 1) {
Toast.makeText(getApplicationContext(), result.result, Toast.LENGTH_SHORT).show();
}
}
}
LoginPresenter下面第三步會(huì)介紹到
三河劝,Presenter 負(fù)責(zé)向Model請(qǐng)求數(shù)據(jù)壁榕,并且返回給View
1,定義一個(gè)BasePresenter提供一些公共方法
public abstract class BasePresenter<E extends IBaseView> {
private Context mContext;
public BasePresenter(Context context) {
this.mContext = context;
}
public E mView;
public void attach(E e) {
mView = e;
}
public void onDestory(){
mContext = null
}
}
2赎瞎,定義上一步提到的LoginPresenter牌里,
public class LoginPresenter extends BasePresenter<LoginView> {
public LoginPresenter(Context context) {
super(context);
}
public void loginRequest(LoginRequest reuest) {
reuest.queryData(mView);
}
@Override
public void onDestory() {
super.onDestory();
}
}
四,數(shù)據(jù)的類型
public class LoginResult {
public int isSucess;
public String result;
}
以上就是MVP實(shí)現(xiàn)的相關(guān)代碼。如有更好的方案牡辽,歡迎留言