c语言编程笔录

首页 >   > 笔记大全

笔记大全

Android如何简单封装一个MVP基类

更新时间:2023-12-13

前言

在Android开发中,采用MVP架构是很普遍的选择。MVP即Model-View-Presenter,它是一种设计模式,可以有效地减少代码冗余,提高代码可重用性和可维护性。在MVP中,Presenter是连接View和Model的桥梁,而View只用关心UI展示和用户操作,Model只用关心数据处理和网络请求。为了更好的实现Presenter和View之间的解耦,我们可以封装一个MVP基类,方便后续的开发。

MVP基类封装步骤

封装一个MVP基类的步骤主要包括以下几点:

1. 封装BaseView基类

BaseView是View的基类,用来定义通用的UI展示逻辑,比如显示加载中、显示错误信息等。以下是BaseView的示例代码:

public interface BaseView {

    void showLoading();

    void hideLoading();

    void showError(String error);
}

2. 封装BasePresenter基类

BasePresenter是Presenter的基类,用来定义通用的UI逻辑和业务逻辑,比如网络请求、数据处理等。以下是BasePresenter的示例代码:

public abstract class BasePresenter {

    protected V mView;

    public BasePresenter(V view) {
        mView = view;
    }

    public abstract void start();

    public void onDestroy() {
        mView = null;
    }
}

3. 封装BaseActivity和BaseFragment基类

BaseActivity和BaseFragment是Activity和Fragment的基类,用来定义通用的UI展示和用户操作逻辑,比如findViewById、setContentView、onClick等。以下是BaseActivity和BaseFragment的示例代码:

public abstract class BaseActivity

extends AppCompatActivity implements BaseView { protected P mPresenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); initView(); mPresenter = createPresenter(); mPresenter.start(); } protected abstract int getLayoutId(); protected abstract void initView(); protected abstract P createPresenter(); @Override protected void onDestroy() { super.onDestroy(); mPresenter.onDestroy(); } @Override public void showLoading() { //显示加载中UI } @Override public void hideLoading() { //隐藏加载中UI } @Override public void showError(String error) { //展示错误信息UI } } public abstract class BaseFragment

extends Fragment implements BaseView { protected View mView; protected P mPresenter; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mView = inflater.inflate(getLayoutId(), container, false); initView(); initData(); mPresenter = createPresenter(); mPresenter.start(); return mView; } protected abstract int getLayoutId(); protected abstract void initView(); protected abstract void initData(); protected abstract P createPresenter(); @Override public void showLoading() { //显示加载中UI } @Override public void hideLoading() { //隐藏加载中UI } @Override public void showError(String error) { //展示错误信息UI } }

总结

封装一个MVP基类需要从BaseView、BasePresenter、BaseActivity和BaseFragment四个方面进行考虑。BaseView和BasePresenter分别封装了View和Presenter的通用逻辑,BaseActivity和BaseFragment分别封装了Activity和Fragment的通用逻辑。使用MVP基类可以简化开发过程,减少重复代码,提高代码可读性和可维护性。