什麼樣的框架適合你?什麼樣的框架也許都不適合你。android
與大千你我同樣,皆是從 無架構到MVC->模塊化->MVP-> MVVM->AAC->組件化AAC。git
多時候,我有在考慮,咱們真的須要過分去設計嗎?可能有人喜歡 BaseVMFragnment,但有些時候,咱們真的須要ViewModel嗎,咱們真的只有一個ViewModel嗎,我可能真的不想去寫,對於2020的今天,帶着這些問題,我開始思考,什麼樣的架構纔是咱們最合適的,適合於各種人士?,我想不出來,因而將選擇主動權交給你們,並將過程當中的一些想法經過代碼匯聚於此,便於爲你們提供思路,這就是CloudAAC,化繁爲簡,一個簡易的組合式框架。github
github:github.com/Petterpx/Cl…markdown
導入依賴架構
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
複製代碼
implementation 'com.github.Petterpx.CloudAAC:core:v1.0.3'
複製代碼
CloudAAC已經導入瞭如下組件:框架
//一個很是優秀的狀態欄處理工具
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0'
//Android-ktx擴展相關
implementation 'androidx.activity:activity:1.1.0'
implementation 'androidx.fragment:fragment-ktx:1.2.5'
//viewModel數據恢復
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0"
複製代碼
core模塊僅提供了核心的基礎類,選擇將主動改造權交給了你們,爲了更好的便於使用,CloudAAC 支持擴展 如下模塊。maven
implementation 'com.github.Petterpx.CloudAAC:databing_ktx:v1.0.3'
implementation 'com.github.Petterpx.CloudAAC:viewbing_ktx:v1.0.3'
implementation 'com.github.Petterpx.CloudAAC:tab_ktx:v1.0.3'
複製代碼
基礎 Base 類。模塊化
適用於 Databinding 的通用 Activity && Fragment.工具
注意: binding 變量 請謹慎使用,非必要場景下,務必禁止使用,避免形成視圖不一致的問題。oop
適用於 ViewBing 的通用 Activity && Fragment.
BaseViewBingActivity ----Activity-ViewBing擴展
BaseViewBingFragment ----Fragment-ViewBing擴展
BaseViewBingVMActivity<VM,Bing>
Activity-ViewBing擴展,包含了默認的viewModel委託使用
BaseViewBingVMFragment<VM,Bing>
Fragment-ViewBing擴展,包含了默認的viewModel委託使用
適用於主頁 tab 的 擴展。
更多擴展等待加入,CloudAAC 儘量採用擴展與組合方式,以便於不一樣人羣的不一樣需求,固然若是你有更好的想法,歡迎 PR.
你知道的越多,你不知道的越多。並不提倡你們去頻繁造輪子,但但願你們都能擁有去改造輪子的想法,CloudAAC 代碼結構比較清晰,相關注釋與邊界已經註明,但願會對你會有所幫助。