說道DDD不得不說傳統的架構與DDD的架構區別。數據庫
傳統的架構不外乎就是三層,而在這三層裏面又不斷的細分,始終沒有達到想要的效果,那麼爲何當時仍是採用三層。架構
固然在DDD沒有提出的時候三層是大多數人的選擇。學習
那麼當領域驅動被提出來的時候它又能帶給咱們什麼樣的好處??spa
近期博主看了一下dax.net大佬有關DDD的文章,這裏提出本身的一些心得,本着共同窗習的精神一塊兒進步。.net
我也來講說領域模型 |
1.爲何叫領域模型?設計
首先傳統的模型(這裏指的只具有getter 和 setter)不包含其餘業務邏輯泛指沒有具體的功能這種模型咱們稱爲失血(貧血)模式。對象
而後纔是具有有業務的模型除了getter 和setter 外還有其餘的業務邏輯包含在裏面,好比說我有一個購物車,購物車內有5件商品,每件商品價值20元,那麼在銷售訂單的時候能夠這樣寫總價=5*20。固然這個例子有點牽強,意會意會就好了。blog
2.下面咱們看看代碼是如何設計。接口
首先咱們有個user、address、saleorder、salelines、Categorization、Category、Product、userrole、ShoppingCart、ShoppingCartItem幾個類圖片
以下圖。
其中聲明IEntity領域實體接口、IAggregateRoot聚合根集合、AggregateRoot聚合根接口的抽象類。
這裏不得不提到聚合個概覽。
引用一下圖片:
生成的數據庫模型以下圖: