【Android开发】 Android中MVP框架的应用

Android中MVP框架的应用

今天详细看了项目代码,大概的了解了项目的业务流程。
在我看来,view层实际上包括了view类和activity以及其包含的自定义视图和布局xml文件。
view类不是视图中的view,意思大概和视图中执行的操作相关。
view类是一个接口其中只包含回调方法,这些方法的具体实现是在实现它的activity中编写的,
present层包含present接口和其实现类,在这些类中通过service和判断逻辑来更深一层的执行业务操作。
重点在于二者之间的包含关系,present中包含activity(实现了view),activity中也包含present对象,activity调用present对象的时候present也可以在内部调用activity中的方法来执行一些操作,这样的回调就可以实现由activity->present->activity的一个操作链。
关于model层,感觉没有用到,可能是偷懒没有写直接包含在service里了。

我们可以简单的举个例子。
(1)先写一个简单的接口作为回调,也就是我之前提到的view:

public interface ExView {
    void success();
    void error();
}

(2)写一个presenter来执行业务逻辑,这里是test,你可以根据其中执行的结果来回调方法,这里把两个方法都执行一下。

public class ExPresenterImpl implements ExPresenter {
    private ExView exView;
    public ExPresenterImpl(ExView exView){
        this.exView = exView;
    }

    @Override
    public void test(){
        Log.d("ExPresenterImpl","test");
        exView.success();
        exView.error();
    }
}
public interface ExPresenter {
    void test();
}

(2)最后写Activity: 其实现了ExView接口,并且维护一个presenter对象,可以在activity中调用presenter来执行业务逻辑,避免activity的冗余并且实现了解耦。回调的方法允许了用户将执行的结果再返回到activity中进行处理。

public class ExActivity extends Activity implements ExView {

    private ExPresenter ex;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ex = new ExPresenterImpl(this);
        ex.test();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void success() {
        Log.d("ExActivity","成功!!");
    }

    @Override
    public void error() {
        Log.d("ExActivity","错误!!");
    }
}

2021.9.10补充
在presenter中可以维护一个model层对象,在model层中实现数据操作,presenter中通过model对象调用。这样实际通过了presenter将view 和model结合起来。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值