領域驅動設計概念介紹

來源:互聯網
上載者:User

實體(Entity)

具有惟一標識的領域對象。通過標識來區分不同的實體。實體具有惟一性。

註:領域就是特定的問題域 如 訂單領域 商品領域,是描述事物的一個模型

值對象(Value Object)

和實體不同,值對象沒有標識。不需要跟蹤值對象的標識和值對象狀態的維護,值對象非常容易建立和丟棄。大多數的時候,值對象只包含資料,不包含行為。值對象最好是不可變的,也就是說,值對象用一個建構函式建立,所有的屬性都是唯讀,不需要維護值對象的狀態。不可變的值對象是可以共用的。

區分實體和值對象的準則:關心對象的標識,對象是惟一的,則為實體。

彙總(Aggregate)

通過定義對象之間的清晰的所屬關係和邊界來實現領域模型的內聚。並避免了錯綜複雜的難以維護的對象關係網的形成。彙總定義了一組具有內聚關係的相關集合,我們把彙總看作是一個工作單元

彙總的特點:

1、每個彙總有一個根(彙總根)和一個邊界,邊界定義了一個彙總內部有哪些實體或值對象,根是彙總內部的一個實體。

2、 彙總根可以引用其他彙總根,通常通過ID(標識)關聯,彙總內的對象之間可以相互引用。彙總根是外部存取彙總內部對象的媒介,換句話說,彙總外部如果訪問彙總內部的對象時,必須通過彙總根開始導航,不允許直接存取彙總內部的對象。

3、彙總根的標識是整個彙總的標識。

4、彙總是一個單元,我們從資料庫或者其他儲存中重建彙總(讀取對應領域中的重建, new 對應領域中的建立),也是讀取整個彙總,而不能直接查詢彙總內部的某個非根的對象。刪除一個彙總根時,必須同時刪除該彙總中的所有相關的對象。彙總是一個完整的整體,不可分割。

彙總根(Aggregate root)

彙總中的一個實體。

區別彙總根:

1、有獨立存在的意義,即它是不依賴於其他對象的存在它才有意義。

2、可以被獨立訪問,還是必須通過某個對象導航得到的。

服務(Service)

這裡的服務不是我們與soa沒有關係。有時在設計領域模型時,有某些行為不適合放到任何一個類中,我們通常會建立一個服務類,用來維護這些行為。服務類沒有內部狀態,可以簡單地作為一個提供操作的介面實現,服務通常協調一個或多個領域對象工作。需要注意的是  服務可以放到應用程式層、領域層、基礎服務層

應用程式層服務(Application Service)

應用程式層中的服務通常協調放到其他層中的服務工作,大多數情況下,應用程式層中的服務多數是流程性質的。

領域層服務(Domain Service)

處理領域內部的值對象 實體的互動。

基礎層服務()

通常存放的是與業務無關的服務,如郵件通知服務。

倉儲(Repository)

倉儲的職責是將領域對象持久化到資料庫或者其他的儲存介質,或者當需要領域對象時從資料庫中重建領域對象。倉儲的下層是資料庫,上層是服務。從更廣義的角度來理解,我們經常會像集合一樣從某個類似集合的地方(資料庫)根據某個條件擷取一個或一些對象。在這個集合中添加或移除對象。倉儲就是提供了類似集合介面來協助我們管理對象。或者更直白的說,倉儲是資料庫中的資料在記憶體中的表現。通常倉儲包含2個部分,倉儲的定義部分(介面)、倉儲實現部分(介面的實作類別),通常倉儲的定義部分存放在領域模型中 ,實現部分存放在基礎服務層。儘管倉儲可以像集合一樣在記憶體中管理對象,但是倉儲不負責事物處理,一般的事物處理交由 工作單元(Unit Of work)

工廠(Factory)

簡單的領域對象的建立可以通過建構函式來處理。工廠則是用來封裝建立一個複雜物件尤其是彙總時所需的。

領域層

領網域服務 實體 值對象 構成領域層

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.