<分区>
我正在创建一个按以下方式分层的 Web 应用程序:
Controller > 服务 > 存储库
因此它遵循服务和存储库模式。
假设我有 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
}
}
当然,每个存储库都有一个服务,存储库将被注入(inject)到该服务中:
public class ProductService
{
public bool DoesProductExist (int productId)
{
// code
}
}
public class PageService
{
public bool CreatePage (int productId, PageRequest page)
{
// code
}
}
我现在遇到的问题是,当调用 PageService
创建页面时,它需要检查是否存在具有给定 productId
的产品,因为如果不存在那么不应创建页面。
我有以下方法,但我不知道它们是否是最好的方法,或者是否有更好的方法
方法一
我是否应该将 ProductService
注入(inject)到 PageService
中以使用 DoesProductExist()
方法,因为代码可重用?
方法二
我是否应该将 ProductRepository
注入(inject)我的 PageService
以在 PageService
中创建我自己的 DoesProductExist()
方法(击败可重用代码的想法)
方法三
我是否应该创建一个类似 ProductPageService
的交叉服务来实现这两种服务?
如果这些都不是好的方法,请随时提出您自己的建议