DDD之領域服務與領域事件

領域服務

領域中的服務表示一個無狀態的操作,它用於實現特定於某個領域的任務。這裏我們要搞清楚什麼樣的操作需要實體,值對象,什麼樣的操作需要採用領域服務。
另外,領域服務不是應用服務,在應用服務中我們不需要處理業務邏輯,業務邏輯都落在領域服務中。
領域服務發現:

  • 執行一個顯著的業務操作過程
  • 對領域對象進行轉換
  • 以多個領域對象作爲輸入進行計算,產生一個值對象。
    過度使用領域服務將會產生一個貧血模型,例如數據建模時,我們的實體常用只含有get/set方法,所有的業務邏輯都包含在了service。這樣導致service變成了一個大泥球。注意區分領域服務與實體,值對象行爲。

領域事件

領域事件通常是用來與其他聚合解耦的,採用觀察者模式,一個聚合訂閱另外一個聚合的事件。
如果是同一個限界上下文時,通常採用進程內的消息發佈領域事件,具體實現可以參考我的這篇博客《Spring Data實現領域事件》
如果是在不同限界上下文時,我們可以採用消息中間件,比如rocket mq,kafka進行消息的訂閱與發佈。

上一篇:《DDD之如何合理設計一個聚合》
下一篇:《DDD之工廠》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章