當前位置:
首頁 > 最新 > MVI 設計模式嘗鮮

MVI 設計模式嘗鮮

作者 PcDack

地址 https://www.jianshu.com/p/dcb7b536066c

聲明 本文是 PcDack 原創投稿,轉發請聯繫原作者授權。

聽說你已經會了 MVP,MVC,MVVP 那麼 MVI 在向你招手

是什麼

Model-View-Intent是安卓最新的設計模式。它的靈感來自於於André Staltz的Cycle.js ,並且被 Hannes Dorfmann帶到安卓世界。

Model-View-Intent

你可能看過Model在其他的設計模式比如MVC,MVP或者MVVP。但是MVI的Model和其他設計模式的完全不一樣:

MVI的整體流程圖

這張圖描述了MVI模式的響應,和數據的流動方向。我們的Model是被Domain層管理和維護的,用來對用戶的某種意圖/動作/命令,做出反應的。只要有新的Model被創建,那麼,意味著我們的View肯定要被更新。

為什麼

這種模式,打開了開發安卓的新思路。我們可以將整個項目按照用戶的操作/命令/動作來設計APP。

如何做使用到的依賴

MVI模式快速開發的依賴

為什麼使用mosby庫

使用Mosby庫來構建MVI。這個庫可以讓我們關注程序設計的藍圖,例如MVI的內容和業務邏輯,而不是處理棘手RxJava API和內存管理。

網路請求依賴

結構

其中data是用來進行數據請求的

domain用來管理Model

mvi用來管理View的

實現過程MVI層實現View

在MVI模式中,我們的View是由兩部分構成的。在上面我們也說過了,就是一系列用戶動作的可觀察對象的介面和一個渲染方法

其中state,將在我們的Domain層定義

實現Presenter

在MVI模式中,Presenter是Domain和View層交互的橋樑,在這個例子中,我們需要將獲取天氣請求的意圖/動作/命令,與獲取天氣數據綁定起來

Domain層

在Domain層,我們用來實現Model,在這裡例子中,我們只要完成一個Model,也就是天氣請求的Model。請求天氣這個Model下,有三種狀態:1.載入狀態2.數據獲取狀態3.錯誤狀態

具體代碼

獲取數據的具體方法

Data層

數據請求的具體實現,我們這裡,就是獲取天氣數據的獲取

最後的工作

實現MainActivity,MainActivity需要繼承自,並且需要實現我們的View即

其中的關鍵點,我都已經注釋了

效果展示源碼github

GIF

https://github.com/pcdack/MyMVITest

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 code小生 的精彩文章:

TAG:code小生 |