Android框架式編程之架構方案


目前移動端應用市場已經是百花齊放,很多獨角獸公司都是通過App創業發展起來的,現在App類型更加豐富,功能越來越完善,基本上涵蓋了各個行業的每個角落。為了開發出更加有競爭力的App,不僅需要功能上有創新,內容也需要更加多元化,這樣就出現了相對巨大的工程。這些工程代碼不停添加,如果沒有一個好的架構,那么所有代碼都會強耦合在一起,功能之間也會出現很多依賴,那么就會出現很多問題,例如:

1、修改功能困難,牽一發動全身。很多地方如果api寫的不好,封裝不優雅,那么就會出現改一個地方需要改很多地方的調用。
2、更新迭代工作中冗余廢棄代碼資源過多造成刪除冗余變得很復雜,並且很可能出現很多bug。

為了解決上述的問題,經過長時間摸索和發展,當今已經有相當成熟的方案來保證盡量避免上述問題的出現。而架構就是為此而生的概念,架構在實際開發中又分為代碼架構和項目架構。其中:

1、代碼架構主要分為三類:MVC、MVP 和 MVVM。

2、項目架構主要分為:單工程模式、模塊化、組件化、插件化。

一、代碼架構

1. 三大代碼架構方案的區別比較:

MVC是一個廣義的架構方法,將邏輯、數據、視圖分離的代碼架構,但是因為Android開發的特點,會導致C和V層在實際的代碼中出現比較大的耦合。

MVP是一個廣義的架構,適用於面向實體或者虛擬用戶接口的開發,它是基於MVC的基礎上,通過依賴倒置來解決Android開發過程中邏輯復用難、實現更替難的問題。

MVVM是一種頁面開發的架構,基於數據驅動,通過只操作 ViewModel 中映射的視圖數據 來刷新視圖狀態,以此來解決 視圖調用的一致性問題,從而規避不可預期的錯誤。

總結:MVP 和 MVVM 二者之間沒有任何關系。MVP 是對 MVC 的升級,而 MVVM 是現代化軟件開發模式的范例。

2. JetPack MVVM 架構

在谷歌官方提供的MVVM架構中,提供了:Lifecycle、LiveData、ViewModel、DataBinding 組件。下面逐一介紹一下這些組件的作用:

  • Lifecycle 的存在解決了 生命周期管理 的一致性問題
  • LiveData 的存在,幫助 新手老手 都能不假思索地 遵循 通過唯一可信源分發狀態 的標准化開發理念,從而在快速開發過程中 規避一系列 難以追溯、難以排查、不可預期 的問題。
  • ViewModel 的存在,主要是為了解決 狀態管理 和 頁面通信 的問題。
  • DataBinding 的存在,主要是為了解決 視圖調用 的一致性問題。

二、項目架構

項目架構的核心思想:分層通信

1. 子模塊的划分

除了常見的common部分抽離, 業務模塊的划分尤為重要,相比於狹義上的架構,廣義上的子系統的划分的關注點,很考驗技術經驗以及對業務的理解。

2. 通信方式

模塊化的通信方式,無非是相互引入;抽取出來了common模塊, 其他模塊使用自然要引入這個module
組件化的通信方式,按理說可以划分為多種,主流的是隱式和路由。隱式的存在使解耦與靈活大大降低,因此路由是主流。
插件化的通信方式,不同插件本身就是不同的進程了。因此通信方式偏向於Binder機制類似的進程間通信。

推薦資料:

1. 是讓人 提神醒腦 的 MVP、MVVM 關系精講:https://juejin.im/post/6846687603547176974

2. 是讓人耳目一新的 Jetpack MVVM 精講:https://juejin.im/post/6844903976240939021

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM