Ch23: Presenter 與 Humble Object
Humble Object pattern
- It is a design pattern: 用來幫助單元測試將容易測試的東西和不容易測試的東西分開來
- 將行為分成 module or class, one of thoe is humble
- This humble module 包含最本質的事務,將行為中非本質的行為剔除,留下本質的事物
- 其他模組則包含所有可被測試的行為
- 講 humble module mock 後就可以測試
Presenter 及 View
- Presenter 接受資料,包成 View model,告知 View 顯示資料的內容
- View 將 View model 描述的資料載入到螢幕
- View 應該被剔除所有 use case 的邏輯,只有最簡單的顯示邏輯 ex 負數要紅色,所以在這個案例裡面 View 是 humble object
My example IRepository
- Repository 只負責對 DB CRUD
- Use case 的 Unit test 使用 stub 出的 Repository 確認 use case 的 flow as expect
測試和架構
- 一個好的架構應該具備可測性。
- 當我們嘗試去拆分可測與不可測時其實就是在定義架構的邊界。
資料庫匝道
- 我的理解就是 Repository or unit of work
Data mappers(資料映射器)
- ORM (X)
- 將資料從 RD table 載到資料結構
- 我認為所有需要跨越邊界傳遞的資料都需要 data mapper,in ch22 資料如何跨越邊界提到:內部不應了解外圈的邏輯,所以網內呼叫的東西應該經過 data mapper,return 的東西也是
Services Listeners(服務監聽器)
- 完全看不懂
總結
- 在跨越邊界時使用 Humble Object pattern 可以增加系統的測測性。
bgm: Where's My Love by SYML