溫馨提示: 本文以《讓人耳目一新的 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 的獨家理解,本人對此享有所有權和最終解釋權。
當您借鑒或引用本文的引言、思路、結論進行二次創作,或全文轉載時,須注明鏈接出處,否則我們保留追責的權利。