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 请求到百度首页的一个操做,很简单的代码。
--------------------- it

相关文章
相关标签/搜索