MVVVR 架構

· 2min
Table of Contents

前言

基於 Clean Swift, MVVM, 打造適合自己的 iOS 架構. MVVVR.
移除了 Clean Swift 的 Presenter / Interactor, 用 ViewModel 與 Binding State 替代.

基本架構

一個 MVVVR 模組代表一個 UIViewController 的 Life Cycle.
包含基本五個模組:

  • Model
    這個 ViewController 要執行的 Action / 要 Binding 的 State / 要呈現的 Model / 基礎 Raw Data.

  • ViewOutlet
    這個 ViewController 要呈現的 UI.

  • ViewController
    UIViewController 主體.

  • ViewModel
    這個 ViewController 的商業邏輯, 例如 call api.

  • Router
    這個 ViewController 的跳轉邏輯.

ViewController 持有 ViewOutlet.
ViewController 持有 ViewModel.
ViewController 持有 Router.
Router 持有(Weak) ViewController.
ViewModel 持有 Model 裡的資料.

關係圖

  1. ViewController Binding ViewModel 的 State.
  2. ViewController 發起 Action.
  3. ViewModel 依照 Action 變更 State.
  4. ViewModel State 變更, 觸發 ViewController 更新 UI.
  
sequenceDiagram
    participant ViewOutlet
    participant ViewController
    participant ViewModel
    ViewModel-->>ViewController: Binding State
    ViewController->>ViewModel: Do Action
    ViewModel->>ViewModel: Call API or Update Models
    ViewModel-->>ViewController: State Changed
    ViewController-->>ViewOutlet: Reload UI or Router to...

Demo

GitHub