不太确定如何解决有关 DDD 的这个问题。
假设您有 2 个域:
Product
负责创建新的和管理Products
一个人创建的现有的域。Product Aggregate Root
- 一个
Store
域,负责将所有创建的内容分配给要出售Products
的给定对象,以及其他内容。Store
但是他们Store
也可以创建新Products
的,将分配给自己,但也可供其他人使用,Stores
以便他们可以分配Product
给自己。Store Aggregate Root
AProduct
可以存在而不属于 a Store
。AStore
可以在没有任何内容的情况下存在Products
(我知道这没有任何意义,但这只是我正在处理 atm 的复杂解决方案的一个简单示例。)
因此,当 aPerson
出现在系统中时,它们可以从任一端开始。他们可以从创建新的Products
开始,也可以从添加新的Store
.
这就是复杂的地方,当他们创建一个新的 时Store
,他们可以选择添加现有的Products
,或者他们可以创建一个新的Product
并将其添加到Store
.
你如何处理这个用例。是否Store
有一个行为来CreateNewProduct
负责设置新的Product
然后将其添加到Store
. 还是您只是在域Product
之外创建一个新Store
域作为域的一部分Product
,然后告诉Store
to AddProduct
/ AddExistingProduct
?
更新:这样的事情是否适合作为Domain Service
public class StoreProductService {
public Store CreateNewStoreProduct (Store store, string sku, string name, etc){
Product newProduct = ProductFactory.CreateNewProduct(sku, name, etc);
store.AddProduct(newProduct);
return store;
}
}