不太确定如何解决有关 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,然后告诉Storeto 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;
}
}