[Android] Architecture: Organizing modules & Entities — MAD Skills(5/5)

Max Chiang
4 min readJun 30, 2022

--

這是介紹 Architecture 的最後一篇。想看第四篇 Domain Layer 的請服用:

聽個音樂休息一下吧!

Organizing modules

在大型項目中,使用 Modules 來組織,可以分離各個功能的職責、避免合併衝突、提高程式碼的可重用性及可測試性,並優化 dependency graph 來達成加快 build 的時間。

那該怎麼劃分 module 呢?

可以將專案劃分為 Feature modulesLibrary modulesApp modules

每個 Feature module 都包含一個單獨且獨立的 Feature,可以依賴 Library modules,但不可以依賴其他的 Feature module。

每個 Library module 都包含可以被多個 Feature modules 重用的程式碼,例如共用的 UI Components 或是 Logging,而且 Library module 可以依賴其他Library modules,但不可以依賴 Feature modules 或 App modules。

App module 負責將所有的內容連接再一起,並可以依賴 Feature modules 和 Library modules。

我們可以把一個單獨且獨立的 Feature 拆分出來製作成一個 Feature module,例如登入模組付款模組購物車模組。每個 Feature module 可以依賴 Library modules,但不可以依賴其他的 Feature module。

我們可以把多個 Feature modules 都有使用的相同程式碼,拆分出來製作成Library module,例如共用的 UI Components 或是 Logging 。每個 Library module 可以依賴其他 Library modules,但不可以依賴 Feature modules 或 App modules。

App module 依賴 Feature modules 和 Library modules,負責將所有的內容連接再一起。

Entities

在專案中,每一個 architecture layers 所需要的資料並不相同,而且都有各自的職責,也就是每一層都要創建一個或多個獨立的 Entities。而這麼做可以獲得乾淨且可擴展的 model architecture。

Entities 大致上可以拆分成以下四種 Remote EntitiesDatabase EntitiesDomain EntitiesUI State

  • Remote Entities:來自 server 或網路 api json 響應的 Entities
  • Database Entities:表示來自 Database 的 Entities
  • Domain Entities:表示來自 Domain Layer 的 Entities,也就是業務邏輯的 models
  • UI State:顯示畫面需要使用到的狀態或資料

謝謝你的觀看,如果對你有些許幫助的話,可以幫我拍手 & Follow 。

想重頭看的朋友可以點擊傳送回 Architecture 第一章

參考資料

--

--