什麼是DDD領域驅動設計的戰術設計?

banq發表於2019-05-03

戰術設計是一組在實施中使用的技術資源域模型,這些資源必須應用在一個單一的有界上下文中。如果正確使用戰術設計標準,您實際上可以豐富您的領域模型,從而清晰地反映您的業務。

請參閱下面的主要構建模組:

實體

一個實體是一個潛在的可變物件,它具有一個唯一的識別符號。實體在其域模型中具有自己的生命週期,這使您可以獲取此實體的整個變化的歷史記錄。

值物件

區分值物件與實體的區別在於,值物件是不可變的,並且沒有唯一標識,僅由其屬性的值定義。這種不變性的結果是,為了更新值物件,您必須建立一個新例項來替換舊例項。

聚合Aggregates

它是戰術設計中最重要和最複雜的模式之一,聚合基於另外兩個戰術標準,即實體和值物件。聚合是一種或多種的群集實體,並且還可以包含值物件。此群集的父實體接收聚合根的名稱。

服務

服務是無狀態物件,它們執行一些不適合實體或值物件上的操作的邏輯。它們執行特定於域的操作,這可能涉及多個域物件。

庫Repository

儲存庫主要用於處理儲存,它們抽象了對資料儲存的依賴擔憂。他們負責持久聚合。

工廠

工廠用於在構造Object時提供抽象,並且可以返回聚合根,實體或值物件。工廠是構建通過構造方法構建複雜的物件的替代方法。

事件

事件表示域中發生的重大事件,需要向屬於域的其他利益相關者報告。Aggregates通常釋出事件。

模組

開發人員很少提及模組,但是它們的使用非常有趣。模組幫助我們隔離概念,可以定義為Java包或C#名稱空間,並始終遵循泛在語言。

您需要了解並非所有這些概念都需要應用於您的域模型,您需要進行分析,以便它不會給專案增加不必要的複雜性。​​​​​​​

相關文章