在包含Order
它可能確實是Product
,作爲OrderLine
的一部分,是一個值對象,由值,如ProductId
,Name
等
順序上下文沒有需要的情況下的BC瞭解產品實體,因爲訂單行通常只包含簡單的僅限於價值的屬性(productId/SKU,名稱,數量和每個物品的價格)。因此,Order
可以提供的功能,如
void addOrderLine(ProductId productId, String productName, BigDecimal pricePerItem, int quantity).
它實際上是不相關的「訂單」 -BC其中對於productId
,productName
等這些值從起源。
然而在實踐中,它可能是非常有可能的是,這些值可以從另一個界上下文來獲得,說「產品」 -BC,負責庫存管理等
是很常見的,讓UI協調這些BKS:
- 的UI(爲客戶提供網上商店,例如)加載產品,其價格從「以產品爲BC」
- 的用戶將產品放入購物籃(我們假設爲簡單起見,這也是「Order-BC」)。因爲,UI會觸發由「Order」-BC處理的命令,如
AddToShoppingBasketCommand(productId, productName, quantity, price)
。
- 當用戶想放置順序曬當前購物,它觸發一個
PlaceOrderCommand
。
- 爲
PlaceOrderCommand
的命令處理程序來處理當前購物籃,並構造相應的Order
;所有需要的是,對於每種產品,已經列在購物籃中的產品的各個屬性(最初在AddToShoppingBasketCommand
中)。請注意,它不需要知道產品BC中的Product
實體的概念。
我應該補充一點,最後一點要通過域服務完成,因爲將購物籃翻譯成訂單顯然是一個領域概念。 – 2014-09-23 13:42:28