1. 程式人生 > 其它 >DDD-領域驅動設計

DDD-領域驅動設計

實體(Entity)

具備唯一標識的物件

值物件(Value Object)

用於描述領域的某個方面而本身沒有概念標識的物件

服務(Service)

當領域中的某個重要的過程或轉換操作不是實體(Entity)或值物件(Value Object)的自然職責時,應該在模型中新增一個作為獨立介面的操作,並將其宣告為SERVICE。

聚合(Aggregate)

聚合就是一組相關物件的集合,我們把它作為資料修改的單元。每個聚合都有一個根(root)和一個邊界(boundary)。邊界定義了聚合的內部都有什麼。根則是聚合所包含的一個特定實體(ENTITY)。對聚合而言,外部物件只可以引用根,而邊界內部的物件之間則可以互相引用。除根以外的其他實體(ENTITY)都有本地標識,但這些標識只在聚合內部才需要加以區別,因為外部物件除了根ENTITY之外看不到其他物件。

工廠(Factory)

當建立一個物件或建立整個聚合時,如果建立工作很複雜,或者暴露了過多的內部結構,則可以使用工廠(Factory)進行封裝

倉儲(Repository)

負責持久化和查詢,實體或者值物件 或者聚合

領域事件(Domain Event)

領域中所發生的一些動作行為是我們需要關係的

分層架構

使用者介面層

負責向用戶顯示資訊和解釋使用者指令。這裡指的使用者可以是另一個計算機系統,不一定是使用使用者介面的人

應用層

定義軟體要完成的任務,並且指揮表達領域概念的物件來解決問題。這一層所負責的工作對業務來說意義重大,也是與其他系統的應用層進行互動的必要渠道

領域層

負責表達業務概念,業務狀態資訊以及業務規則。儘管儲存業務狀態的技術細節是由基礎設施層實現的,但是反映業務情況的狀態是由本層控制並且使用的。領域層是業務軟體的核心

基礎設施層

為上面各層提供通用的技術能力:為應用層傳遞訊息,為領域層提供持久化機制,為使用者介面層繪製螢幕元件,等等。基礎設施層還能夠通過架構框架來支援4個層次間的互動模式