今天深海將給大家分享一下個人對現有Android架構的分析和總結;
Android 架構設計(二):分包和檔案結構 //敬請期待
Android 架構設計(三):三方框架推薦 //敬請期待
Android 架構設計(四):組件化? //敬請期待
現有Android主流設計模式有哪些?
1:無架構
- 很多人把無架構定為MVC ,這邊深海要糾正一下,無架構 != MVC
2:MVC
- Model - 資料模型/資料來源,
- View - 視圖(Activity/Fragment/View),
- Controller - Controller通常為單例模式存在,View與Controller相互持有,View與Controller都持有Model,View觸發事件時通過Controller處理邏輯后改變Model,或Controller 監聽到資料改變后改變View展示,

我這邊就直接拿網圖了啊,不過網圖畫的不對,我這邊糾正了一下,View與Controller是相互持有,因為View需要持有Controller才可以呼叫其方法,而Controller必須持有View才可以改變它,Model沒有持有View的必要, 這個網圖的原作者可能對與MVC的理解和深海有所不同,
優點:
簡單,類少,檔案少,很小的專案或者很大的專案都可以用,
缺點:
業務越復雜,越亂,檔案少意味著檔案個頭大,
適合小專案或者邏輯不是太復雜的大專案, 自從MVP興起后使用率逐漸變低,從MVVM興起后幾乎絕跡,MVC大多看到的是老專案的影子,或者很小的專案和獨立開發的專案,
3:MVP
- Model - 資料模型/資料來源,
- View - 視圖(Activity/Fragment/View),
- Presenter - 作為隔離聯系人,View觸發事件時呼叫Presenter方法,由Presenter完成后續邏輯后改變Model并改變View,

與MVC的核心區別:
- View和Model禁止直接通信,
- Presenter通常面向界面與界面成一對一的關系,而Controller通常面向業務,服務于一個業務下的所有界面,
優點是職責清晰,接藕,缺點是介面多,檔案多,代碼多,
至今都被人認為是Android最主流的架構設計模式,但是MVVM出現后很大一部分的新專案都采用了MVVM的結構,且比率還在不斷提高,
4:MVVM
使用舉例:Android MVVM最簡易舉例(ViewModel&LiveData)_趙星海的博客-CSDN博客_android mvvm
資料驅動為核心,ViewModel作為View的資料映射,View的所有資料均來自ViewModel,View改變時呼叫ViewModel的方法處理邏輯并改變其資料,同時View通過DataBinding或者LiveDate監聽資料的改變,由此改變View的展現,
各自職責:
- ViewModel: 負責保存資料,處理邏輯&改動資料,
- View:負責三件事:1.展示資料2.監聽ViewModel的資料改變由此改變自身展示;3.觸發事件后直接改變ViewModel資料,或呼叫ViewModel方法,由ViewModel處理邏輯后改變資料,
- Model:通常指介面回傳資料的資料模型和本地存盤資料模型,不包含View的資料模型,因為View已經有了自己的專用資料模型,那就是ViewModel ,

這個圖我自己畫一下,因為網圖不夠明確,
與MVP的區別:
- ViewModel不持有View 而Presenter持有View,
- MVVM為資料驅動 MVP為事件驅動,
- ViewModel為資料驅動 而Presenter為事件驅動,
優點:
邏輯清晰,代碼檔案也少
缺點(大多是Databinding的缺點):
- 資料系結增加Bug除錯難度,
- 對于復雜的頁面,model也會很大,雖然使用方便了也很容易保證了資料的一致性,但長期持有,不利于釋放記憶體,
- 資料雙向系結不利于View重用,
深海個人不推薦使用Databinding, 推薦使用LiveData+Kotlin布局引入插件,
深海認為 布局檔案應該保證其簡單性和職責單一性!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377016.html
標籤:其他
上一篇:基于Spring Cloud Alibaba 前后端分離架構分布式微服務高并發架構 資料平臺化(中臺)思想+多租戶saas企業開發架構技術選型和設計方案
下一篇:DHCP實驗
