如何简单,快速地搭建MVP架构(实战)

前言

MVP模式,最早是由Taligent的Mike Pote 提出的,MVP的提出主要是为了解决MVC模式中结构过于复杂和模型-视图耦合性过高的问题。View和Model完全解除耦合。


一、MVP结构

参照Google官方的DEMO,制定了以下的方案。我们最终的目的是将复杂的业务逻辑处理与数据处理剥离视图层,视图层只作为展示。

二、分析各个层的作用

以下是项目中实际的代码分层,每个公司的架构分层可能都不一样,但是原则都是一样的,尽量清晰和相互之间的解耦,提高可读性与可维护性,让我们快速编完代码回家陪老婆孩子。😝

  • adapter:放置列表的适配器(根据实际开发情况而定,可以不需要此层
  • base:Activity、view、presenter等封装的基类。
  • bean: 数据模型。
  • contract: 管理view接口和presenter接口。
  • model: 进行网络数据与本地数据处理。
  • presenter: 存放presenter。
  • view: 存放activity,fragment。

三、核心代码讲解

请大家前往我的Github下载源码,记得帮忙点颗星。网上有很多版本,作者也是借鉴Google的例子进行了简单实用的封装,帮助大家快速应用到实际项目中去。
  • Presenter层封装

代码很简单主要是思路,将View层(Activity)与Presenter层绑定的公共代码抽取到基类,目前采用的是弱引用,更好的方式应该是Presenter的生命周期长于Activity,后续我会继续优化。

 public class BasePresenter<T> {

    private WeakReference<T> mWeakReference;

    protected WeakReference<T> mTWeakReference;

    public void attachView(T view){
        mTWeakReference=new WeakReference<T>(view);
    }

    public void detachView(){
        if(mTWeakReference!=null){
            mTWeakReference.clear();
        }
    }

    protected T getView(){
        return mTWeakReference.get();
    }

}
  • Activity抽取

代码依然很简单,将activity公共部分抽取出来进行封装。将创建Presenter步骤交给子类实现,分别在Activity创建的时候去绑定View,在Activity

public abstract class BaseActivity<V,T extends BasePresenter<V>> extends AppCompatActivity {


    protected abstract int setLayoutId();

    protected abstract T createPresenter();

    public T presenter;

    protected  abstract void start();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(setLayoutId());
        presenter = createPresenter();
        presenter.attachView((V)this);
        start();

    }

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

四、一起交流学习

大家有问题,可以加我的微信和QQ:379323664。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容