我在我的书和互联网上搜索了我的问题,但我没有找到。也许你可以帮助我。
让我们假设我以这种方式构建了域层(我认为它是基本结构):
Product
IProductRepository
IProductService
ProductCalculator
class ProductService : IProductService
//..
public List<Product> GetSimilarProducts(productId) {
// body of this method is just an example, it doesn't have sense
var product = repo.FindById(productId)
repo.FindBySimilarName(product.Name);
// some more logic
// and more
return similarsProducts;
}
//..
class ProductCalculator : ICalculate
//..
private Product _p;
public ProductCalculator(Product p) {
_p = p;
}
public double Calculate() {
// logic..
// calling repo
// calling services
// calling own class methods
return result;
}
//..
所以,问题是:ProductCalculator是否可以同时使用ProductRepository和ProductService? 或者我可能走得更远:这是正确设计的域名吗?
服务可以使用自己的方法来解决任务吗?我正准备将ProductCalculator更改为Service,但我不知道这是否正确。我只想问,在我看来,没有。
祝你好运
ps您是否有链接到开源项目(例如,在github上),值得查看他们的域模型?
答案 0 :(得分:4)
当模型的概念会扭曲任何实体或价值对象时,服务是合适的。
来自埃文斯的DDD,一项优质服务具有以下特点:
Los Techies有一些关于何时创建服务的精彩文章。