美文网首页
如何简单,快速地搭建MVP架构(实战)

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

作者: 大象哥哥爱撸码 | 来源:发表于2017-05-02 21:38 被阅读0次

    前言

    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。

    相关文章

      网友评论

          本文标题:如何简单,快速地搭建MVP架构(实战)

          本文链接:https://www.haomeiwen.com/subject/kfuhtxtx.html