Software Design - Architecture - VIPER
簡述
VIPER (View-Interactor-Presenter-Entity-Router)
有很多種實作流派,下圖是我比較偏好的模式呈現
VIPER 借鏡了 CA (Clean Architecture) 的思想為 MVC 提供一個新的設計方案
- Entity 對應原本的 Model
- Controller 責任過重 -> 將業務邏輯移至 Interactor 並提高重用性
- Controllers 之間耦合 -> 將導航邏輯移至 Router
- Presenter 作為 Binder 將 View / Interactor / Router 整合
啟發
VIPER 是筆者學習架構路上很重要的一個過渡,有以下兩點的思想轉變
顆粒度更細的單一職責
Interactor 封裝業務的概念在純 MVX 中是無法直接體會到,因此對之後學習 CA 時起了很大的緩衝,不然對於 Usecase 的設計應該會很不適應。
重視 Navigation
在學習 CA 中始終沒題到 feature/componet module 之間是如何互動的,也是在回頭複習 VIPER 時才重新意識到 Router 的重要性。當沒有特別規劃 Navigation 時很容易會造成 module 之間的耦合。