無暇的架構 Clean Architecture II
The Clean Architecture II
前一篇我們介紹了 Clean Architecture 的主要精神與概念,現在我們來細部看一些層與名詞的定義
- 第一張圖是 Uncle Bob 的原圖
- 第二張是 App 常用到的簡化圖
Entities
Entities 是 App 的核心,透過 Entities 你可以了解 App 想做什麼,有什麼功能,有哪些商業邏輯。
注意 Entities 定義了規則,但不去實作規則,也不會去驗證規則,也不儲存資料,更不會去跟外層互動。
比如你發想了一個電子書 App,書櫃書籍,書籍分類,書籍資訊等等都是 Entities
。
我認為 Entites 翻譯成
單元
好像比較貼切
Use Cases
也稱之為 interactors
or business services
,是 Entities 的擴展,整合所有的單元
。它跟我們實務分析上的 Use Case 是同樣的精神概念,比如把這本書從我的最愛移除 removeFromFavoriteUseCase
,或者把這本書的分類從財經改到工具書 changeCategoryFromFinancialToToolsUseCase
等等。
Repositories
顧名思義,Repositories 提供 Entities 的持久化 (Persistence),通常會提供 CRUD 的介面,或者一些比較有目的性的高階 API,比如跟帳號有關的可以叫做 AccoutnRepository
等等。
Presenters
在我的理解上不論你導入的是 MVC, MVP, MVVM,Presenters 扮演的角色有點像是 Controller
or Selector
,比如在 View 中有方法叫做 onBorrowButtonClicked
和onEntranceListItemSelected
,那對應 Presenter 的方法可以叫做 borrowBook
和 selectEntrance
。
DB & API
通常我們會選擇一些 Database framework 來做整合,常用的比如 realm, sqlite, core data……等等。
Device
諸如一些感應器,鬧鐘,推播,播放器等等,主要也是實作內層定義的抽象 output。
Reference
Author Yuyu, Lin
LastMod 2018-04-19