Я создаю веб-приложение с многоуровневой структурой следующим образом:
Контроллер> Служба> Репозиторий
Таким образом, оно следует шаблону службы и репозитория.
Давайтескажем, у меня есть 2 сущности Product
и Page
примерно так:
public class Product
{
public string Name { get; set;}
public Page Page { get; set; )
}
public class Page
{
public string Name { get; set;}
}
Каждая из этих сущностей имеет хранилище примерно так:
public class ProductRepository
{
public Product GetProduct(int productId)
{
// code
}
}
public class PageRepository
{
public Product GetPage(int pageId)
{
// code
}
}
И, конечно же, каждое из этих хранилищу меня есть служба, в которую будет добавлен репозиторий:
public class ProductService
{
public bool DoesProductExist (int productId)
{
// code
}
}
public class PageService
{
public bool CreatePage (int productId, PageRequest page)
{
// code
}
}
Проблема, с которой я столкнулся сейчас, заключается в том, что при вызове PageService
для создания страницы необходимо проверить, существует ли продукт сучитывая productId
, потому что если нет, то страница не должна создаваться.
У меня есть следующие методы, но я не знаю, являются ли они лучшими методами или лучше
Метод 1
Должен ли я ввести ProductService
в PageService
, чтобы использовать метод DoesProductExist()
, потому что код многократного использования?
Метод 2
Должен ли я ввести ProductRepository
в мой PageService
, чтобы сделать мой собственный метод DoesProductExist()
вPageService
(победив идею многократного использования кода)
Метод 3
Должен ли я создать кросс-сервис, похожий на ProductPageService
, который бы реализовывал обе услуги?
Если ни один из этих методов не является хорошим, пожалуйста, не стесняйтесь предложить свой собственный