🎯 什麼情境該想到我
當你「想讓領域層像操作一個記憶體集合一樣存取物件,不必直接面對資料庫」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:在領域層與資料對應層之間,提供一個像「記憶體物件集合」的介面,隔離領域邏輯與資料存取細節。
做法要點:
- 對外提供類似集合的方法(新增、移除、依條件取得領域物件)。
- 用戶端用領域語彙描述要什麼,不必知道背後是 SQL 還是其他儲存。
- 內部常以查詢物件組裝查詢條件,再交給資料對應層執行。
- 讓領域程式碼讀起來像純物件操作,強化領域模型的純粹性。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 對簡單應用是額外一層抽象,可能過度設計。
- 完整實作(支援任意查詢)成本不低,通常需框架支援。
- 若直接用 ORM 的查詢介面已足夠,未必要再包一層。
🔗 相關工具
- 查詢物件 Query Object(儲存庫內部用它來描述與組合查詢條件)
- 中繼資料對應 Metadata Mapping(提供底層物件與資料表的對應)
- 企業應用架構模式