天天看點

Rxjava+Retrofit+okhttp+mvp實作

最近在學習的網絡架構搭建,在網上看了不少的部落格,有着各種各樣的封裝思路,看的實在是激情四射,乘熱打鐵,趕緊把學到的知識記錄下,下面正式開始

關于rxjava,retrofit,okhttp,網上有大量的文章,這裡就不做概述,主要是想來談談mvp

MVC

何為MVP,相信大家都能說得出一二,靈活,友善維護,解耦等,在說MVP之前,先來說說MVC

通常我們在開發項目之中,開始之初項目還小,是以使用mvc架構反而更輕松,但是随着項目不斷疊代,變大很大,這時候mvc反而讓代碼難以維護,是以為了項目以後着想,mvc這種設計模式已經不太适合去開發,這裡引用stormzhang一篇文章,裡面對mvc有着詳細的介紹:http://mp.weixin.qq.com/s/GuO5wdo2rJgvHH6mErLgqw

MVP

mvp是在mvc的基礎上進行演化而來,它分離了view層和model層,中間通過presenter來進行通信,也就是說各層做各層的事情,互不幹擾,最後通過中間人去傳遞,這樣就大大的提高的代碼的可讀性以及維護性,但相對而言,就需要寫很多的類和方法,是以說,如果項目不大,并且疊代不多的情況下,可以考慮用mvc,反之就mvp吧,當然也可以用mvvm,clean,下面開始正文

我們基于mvp模式去設計的,是以我們得建立mvp用到的東西,先看項目結構

Rxjava+Retrofit+okhttp+mvp實作

并不多,bean目錄主要是存放我們的實體類,model主要是需要做的方法,net就是網絡的一些設定,presenter就是橋梁,service就是rxjava的接口,util是些用到的工具類,view則是展示給使用者,好了有了這些怎麼去實作?

其實就是根據之前的封裝而改的,可以參考下我前篇文章《基于RxJava和Retrofit的二次封裝》http://www.jianshu.com/p/4b7517d497dd

味道還是那個味道,隻是請求的方式不太一樣而已

model

Rxjava+Retrofit+okhttp+mvp實作

可以看到,我們把之前請求資料的類變成了model層,這層主要是跟網絡打交道

presenter

Rxjava+Retrofit+okhttp+mvp實作
Rxjava+Retrofit+okhttp+mvp實作

這層是連結了model和view層,使用者處理事件時,直接調用doLogin方法,得到結果之後,就回調view來展示給使用者

view

Rxjava+Retrofit+okhttp+mvp實作
Rxjava+Retrofit+okhttp+mvp實作

Activity

Rxjava+Retrofit+okhttp+mvp實作
Rxjava+Retrofit+okhttp+mvp實作
Rxjava+Retrofit+okhttp+mvp實作
Rxjava+Retrofit+okhttp+mvp實作

總體的就是這樣,項目已經上傳github,有興趣的可以下載下傳來看看

https://github.com/ReturnYhh/Rxjava-Retrofit-okhttp-mvp