Android MVP 最优实现

本文详细介绍了Android中MVP架构模式的应用。通过Contract定义View的契约,Model负责业务逻辑,View呈现视图,而Presenter作为业务处理层,确保数据正确性并与View交互。这种模式提高了代码的组织性和可测试性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  1. Model:执行逻辑
  2. View:视图展示
  3. Presenter:业务处理
  4. Contract:当前view的契约者

Contract

契约者,相当于约束一个activity或者fragment使用的mvp中的具体哪些方法

public interface BaseContract {    interface Model {        void getVoid();            	boolean getBoolean();    }    interface IView  {                void onLoading();                      void onError(String throwable);		      	        void onSuccess(Object obj);    }    interface Presenter {        void getBoolean();      	      	void getVoid();    }}

Model

处理真正的逻辑的,传递进来的参数是已经处理好的参数,不需要去做除了业务之外的逻辑

public abstract class BaseModel implements BaseContract.Model{  		//没有返回值的逻辑    public void getVoid(){ 	       	//逻辑处理    }    	//返回boolea值的逻辑  	public boolean isBoolean(){    	//返回boolean值的逻辑      	//逻辑处理      return true;    }  	  	//加法  	public Integer add(int a, int b){    	return a + b;    }    	//将对象变成字符串  	public String getString(Object obj){    	return obj.toString();    }}

View

实现了view接口的具体实现类需要实现的方法,这些方法应该被实现类处理

public interface IBaseView extends BaseContract.IView{  	//显示错误信息    void onError(String errorStr);  	  	//处理成功逻辑  	void onSuccess(Object obj);    	//等待  	void onLoading();}

Presenter

业务处理,确保传递进model的参数的正确性。如果有错误,则需要传递进view,告诉view层

public class BasePresenter  implements BaseContract.Presenter{    protected IBaseView iBseView;//view    private BseMobel baseMobel;//mobel  	//构造方法传递进来实际实现IBseView接口的对象  	public BasePresenter(IBseView iView){    	iBseView = iView;      	baseModel = new BseModel();    }    	public void getVoid(){      	iBaseView.onLoading();    	baseModel.getVoid();	    }    	public void getBoolean(){      	iBaseView.onLoading();      if(baseModel.getBoolean()){      	iBseView.onSuccess();      }else{        iBseView.OnError("model处理了错误的结果");      }    }      //清除当前mvp对象    public void destory() {       iBseView = null;       baseMobel = null;    }} 

具体使用

public class MainActivity extends BaseMvpActivity<BasePresenter> implements BaseContract.IView {    @BindView(R.id.et_username_login)    TextInputEditText etUsernameLogin;    @BindView(R.id.et_password_login)    TextInputEditText etPasswordLogin;    @Override    public int getLayoutId() {        return R.layout.activity_main;    }    @Override    public void initView() {        mPresenter = new BasePresenter(this);    }   	@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // TODO: add setContentView(...) invocation        ButterKnife.bind(this);    }    @Override    public void onSuccess(Object bean) {        Toast.makeText(this, bean.getErrorMsg(), Toast.LENGTH_SHORT).show();    }    @Override    public void onLoading() {        ProgressDialog.getInstance().show(this);    }     @Override    public void onError(String throwable) {        Toast.makeText(this, throwable, Toast.LENGTH_SHORT).show();    }    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值