• MVP 实战


    那么我们下面就要将这个类中的代码改写为 MVP 的写法,回顾上面提及的 MVP 架构的思想,它是将 View 层与 Model 层彻底隔离,意味着 View 和 Model 都不再持对方的引用,它们通过一个第三者 Presenter 来代理事物的传递,所以 Presenter 层会持有 Model 与 View 层的引用,这是第一步。

        第二步,是将它们之间的联系抽象出来,以接口的方式相互调用,所以 Model 、View、Presenter 各自拥有自己的接口和抽象方法,所以这就会无形的多出了三个接口类,这也就是 MVP 的缺点之一。所以,为了较少的创建接口类,我们就给这三层接口定义了一个契约接口,把它们更加紧密的结合在一起,方法查看,例如代码这样写:

    (1)契约类:

    package com.test.mvp.mvpdemo.mvp.v1;

    import okhttp3.Callback;

    /**
    * 契约接口,可以很直观的看到 M、V、P 层接口中提供的方法
    */
    public interface MainContract {
    interface IMainModel {
    void requestBaidu(Callback callback);
    }

    interface IMainView {
    void showDialog(http://www.my516.com);

    void succes(String content);
    }

    interface IMainPresenter {
    void handlerData();
    }
    }
        然后,再将之前的一个单独的 MainActivity 分包,分别创建 Model 层实现类、Presenter 层实现类、MainActivity 就相当于View 层,这样一来架构就更加清晰明了:

        接着,分别给这三层实现我们刚刚写的 MainContract 中相对应的接口,我们先来看看 Model 层,它就主要负责网络请求,也就是我们的 OKHttp 请求到百度首页的一个操作,很简单的代码。
    ---------------------

  • 相关阅读:
    C# 操作ini配置文件
    2015-2016跨年感想
    HTTP 状态码总结 (HTTP Status Codes)
    简单、精准、高效的使用搜索引擎,快速的找到你想要的结果
    ASP.NET前后台交互之JSON数据
    软件开发项目做需求分析的一点心得
    我是如何自学编程的“3遍读书法”
    C#中Request.ServerVariables详细说明及代理
    C#
    JavaScript如何计算两个日期间的时间差
  • 原文地址:https://www.cnblogs.com/ly570/p/11342617.html
Copyright © 2020-2023  润新知