我是靠谱客的博主 愉快鞋子,最近开发中收集的这篇文章主要介绍MVP升级版,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MVP 分为3个模块:

  • 处理界面的View
  • 处理逻辑的Presenter
  • 定制协议(可以理解为模块接口)的Contract

Contract

该类主要来定义当前模块所需要的逻辑接口和View接口。
比如你项目中有很多的模块:登录模块,注册模块……
拿登录模块举例子:
1. 首先定义登录模块的协议

public class LoginContract {
// 逻辑协议
// 定义模块逻辑接口
public interface Presenter{
void login(String userName,String psw);
void forgetPsw(String userName);
}
// UI协议
// 定义模块View接口
public interface View{
void showLoginLoading();
void dismissLoginLoading();
void showLoginSuccess();
}
}

上面例子中我们定义了登录模块中需要用到的逻辑操作login 、 forgetPsw。定义了模块中需要的相关View层UI显示的showLoginLoading()、void dismissLoginLoading()、showLoginSuccess().

Presenter

在上面Logincontract中我们定义了这个模块中的逻辑协议(接口)。所以我们要在Presenter这个逻辑层去实现那些定义好的协议。
同样来拿Login来举例子。

public class LoginPresenter implements LoginContract.Presenter {
private LoginContract.View mView;
private Context mContext;
public LoginPresenter(LoginContract.View mView, Context mContext) {
this.mView = mView;
this.mContext = mContext;
}
@Override
public void login(String userName, String psw) {
//根据逻辑操作的返回来触发UI层的变化
mView.showLoginLoading();
//这里做一些关于登录的逻辑操作,比如用userName 和 psw进行接口调用。
mView.dismissLoginLoading();
}
@Override
public void forgetPsw(String userName) {
}
}

Ok,我们在逻辑层Presenter中对我们定义的逻辑协议做了实现,现在就差View层协议没有实现了。

View

说到View,我们就不得不想到Activity、Fragment、Dialog等跟UI相关的载体。
拿Activity来举例,下面实现登录界面的Activity。

public class LoginActivity extends AppCompatActivity implements LoginContract.View, View.OnClickListener {
private LoginContract.Presenter mPresenter;
private Button btn_login;
private Button btn_forgetPsw;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_login = (Button) findViewById(R.id.btn_login);
btn_forgetPsw = (Button) findViewById(R.id.btn_forgetPsw);
mPresenter = new LoginPresenter(this,this);
btn_forgetPsw.setOnClickListener(this);
btn_forgetPsw.setOnClickListener(this);
}
@Override
public void showLoginLoading() {
//progress.show();
}
@Override
public void dismissLoginLoading() {
//progress.dismiss();
}
@Override
public void showLoginSuccess() {
//dialog.show();
}
@Override
public void onClick(View v) {
int id = v.getId();
if(id == R.id.btn_forgetPsw){
**mPresenter.forgetPsw("userName");
}
if(id == R.id.btn_login){
mPresenter.login("userName","psw");
}
}
}

首先View要实现Contract定义的View接口,然后在初始化的时候,持有一个处理逻辑的Presenter对象。然后在View使用到逻辑的地方,只需要调用mPresenter.逻辑操作即可。

以上就是简单的MVP在项目中的应用,是不是很简单。

最后

以上就是愉快鞋子为你收集整理的MVP升级版的全部内容,希望文章能够帮你解决MVP升级版所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部