溫馨提示: 本文以《讓人耳目一新的 Jetpack MVVM 精講》作爲前置知識的鋪墊,假定小夥伴們在閱讀本文前 已對精講篇的內容有了一定理解。
背景
人,不是機器,人註定會犯錯。
尤其是在 多人協作的軟件工程背景下 快速版本迭代的時候。
有限的注意力應始終放在刀刃上,因而那些機械重複的模板代碼,應在後臺自己默默安排好一切、免除因各種手工操作的失誤 而造成的不可預期的後果。
腳手架項目應運而生。
架構圖總覽
腳手架項目不僅僅是我一個人的創作,也是集許許多多優秀開發者參與演化的結果。
該項目主要包含 表現層、領域層、數據層 三層:
腳手架項目有 3 寶。考慮到 “按需” 選用的原則,現已抽取爲 “依賴庫” 獨立維護。
- 福利 1:DataBinding 嚴格模式
- 福利 2:UnPeekLiveData 發送一次性事件
- 福利 3:Smooth-Navigation 使轉場順滑
通過 Request 來複用轉發邏輯
通過 UseCase 管理可叫停的業務
通過 DataResult 回調數據層結果
考慮到本文的目標主要是分享項目,如對具體的設計緣由感興趣,可參見源碼中註釋的解析,此處不做累述。
綜上
任何技術的存在,都是旨在特定背景下解決特定問題,架構模式也不例外。
透過過去一年的開源和對高頻場景的總結,我們已爲 “頁面開發” 場景下存在的高頻隱患提供了 “相應解”。
隨着背景因素的不斷變化,技術亦處於不斷的發展中,因而《GitHub:Jetpack MVVM 腳手架》仍朝着趨於成熟的方向不斷完善。
今後如在個人項目中 用到了該腳手架項目的依賴庫,可隨時在 issue 區提供項目信息,如此可以讓更多的開發者 有機會認識你的開源作品。
誰在使用
剛剛在 GitHub 看到有小夥伴基於《腳手架》項目的架構設計重構了多個項目,感興趣的小夥伴可前往查閱 😉
GitHub - Jetpack開發短視頻應用實戰 - 重構
版權聲明
本文以 CC 署名-非商業性使用-禁止演繹 4.0 國際協議 發行。
Copyright © 2019-present KunMinX
本項目是作爲《重學安卓》專欄 Jetpack MVVM 系列文章的配套項目而存在,文章內容和項目中的代碼設計均涉及本人對 Jetpack MVVM 的獨家理解,本人對此享有著作權。
任何組織或個人,未經與作者本人溝通,不得將本項目的代碼設計和本人對 Jetpack MVVM 的獨家理解用於出書和賣課的商業用途。