Я искал в своих книгах и в Интернете ответ на мой вопрос, но я не нашел. Может быть, вы могли бы помочь мне.
Предположим, что у меня доменный слой, рассчитанный таким образом (я думаю, что это базовая структура):
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 на Сервис, но я не знаю, правильно ли это. Я просто спрашиваю, на мой взгляд, нет.
С наилучшими пожеланиями
ps У вас есть ссылки на проекты с открытым исходным кодом (например, на github), которые стоит посмотреть на их модель предметной области?