創建過程中須考慮一些重要細節, 否則所創建的聚合將處於不正確的狀態, 使用適當的工廠方法可以確保這一點, 而客戶端只需輸入基本的參數(通常是值對象), 另外, 工廠能更好地表達出通用語言, 使團隊成員更容易溝通, 這是建構函式不能達到的。
聚合根中的工廠
工廠方法能幫助我們有效表達限界上下文中的通用語言,減清客戶端在創建新聚合實例時的負担,並確保所創建的實例處於正確的狀態。
但工廠會帶來性能上的影響,在創建聚合實例時,我們必須先從持久化存儲中取得參數的實例,雖然與工廠帶來的好處相比之下,這點性能的損失是值得,但隨著該限界上下文吞吐量的增加,團隊成員需仔細衡量可能帶來的後果。
領域服務中的工廠
作者這裡關注點主要集中在對防腐層,發布語言,開放主機服務的集成上。
可使用工廠在不同上下文進行交互時,擔任配適器(Adapter)將其他上下文對象翻譯成自己上下文中的協作對象。通過使用基於領域服務的工廠,我們可以將兩個限界上下文的生命周期和概念術語分離。
小結
1. 使用工廠來創建不同的聚合實例, 並保證聚合狀態的正確性。
2. 將領域服務設計成工廠, 其中包括與其他限界上下文的交互,以及將外部對象翻譯成本地對象。