MVP 模式好不好,有的人说好,因为大家都说好,有的人说不好,代码太多。其实还是好的,不好是因为姿势不对。
MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
我们先过一张图来先理解
mvp 主要目的在于代码解耦和方便单元测试
先带着看下基类,然后我们再看具体实现:
首先我们先看看 Fragment 的抽取
package com.qffxl.qffxl20190102.base;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.qffxl.qffxl20190102.base.mvp.BasePresenter;
import com.qffxl.qffxl20190102.base.mvp.IBaseView;
/**
* @auther: 清风扶细柳
* @Date: 2019/1/2
* @Time:下午 07:01
* 抽取的Fragmeng
*/
public abstract class BaseFragment<P extends BasePresenter> extends Fragment implements IBaseView {
protected P presenter;
@Nullable
@Override
/*
*创建布局
*/
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(), bindlayoutId(), null);
presenter = initPresenter();
presenter.attachView(this);
initView(view);
return view;
}
//交给子类 去实现方法
protected abstract P initPresenter();
protected abstract void initView(View view);
protected abstract int layoutId();
@O