我已经和DDD合作几个月了,我遇到了一些我不确定的事情。
以添加
Product
给一个
Order
反对。从我们的管制员那里,我们会得到一个
int
产品
在数据库中。以下两个例子中哪一个是正确的(如果它们都是错误的,请告诉我)?
public class OrderController
{
// Injected Repositories
private readonly IProductRepository _productRepository;
// Called by UI
public void AddProduct(int productId)
{
Order order = ...; // Persisted Order
Product product = _productRepository.GetProduct(productId);
order.AddProduct(product);
}
}
控制器实例化产品本身并通过以下方法将其添加进来:
void AddProduct(Product product)
{
productList.Add(product);
}
例二:
public class OrderController
{
// Injected Repositories
private readonly IProductRepository _productRepository;
// Called by UI
public void AddProduct(int productId)
{
Order order = ...; // Persisted Order
order.AddProduct(productId, _productRepository);
}
}
这个
命令
Product AddProduct(int productId, IProductRepository productRepository)
{
Product product = productRepository.GetProduct(productId);
productList.Add(product);
return product;
}
我现在已经看了第一个示例,因为您的域模型不应该在内部调用服务方法,但是我最近看到了一些使用第二个示例的示例,它看起来确实很整洁。在我看来
快要贫血了。
例二