[英]Recommendations for dependencies in Service Layer
在服務類中定義依賴項的推薦體系結構方法是什么?
這樣可以嗎,當另一個班,例如。 OrderService
依賴於存儲庫類ex。 CartRepository
代替CartService
? 是否應該始終為每個域對象創建一個存儲庫和一項服務?
public class CartService : ICartService
{
private IBuyerRepository _buyerRepository;
private ICartRepository _cartRepository;
private IConfigService _configService;
private ISimpleDataService _simpleDataService;
public CartService(IBuyerRepository buyerRepository,
ICartRepository cartRepository,
IConfigService configService)
{
_buyerRepository = buyerRepository;
_cartRepository = cartRepository;
_configService = configService;
}
public void Save(Cart cart)
{
_cartRepository.Save(cart);
}
}
OrderService
文件:
public class OrderService : IOrderService
{
public OrderService(ICartRepository cartRepository)
{
}
}
作為第一步,您的實現很好,並且在一個簡單而不是太大的領域中。
這樣的實現具有優勢:盡管每個http請求僅一個服務可以管理它所需的所有存儲庫,但是管理sql事務以維護完整性沒有困難。
它有太多弊端:您可以編寫兩次或更多次相同的業務規則……我們都很懶,所以這是一個問題。 但是,當六個月后有人(或您)將第三次調用存儲庫的服務實現而忘記業務規則時,將會出現重大故障……再見,可愛的領域……
我的建議是,一個服務僅調用其存儲庫,並在需要時調用封裝其自己的邏輯的其他服務。 要記住的唯一技巧是傳播事務以避免發生奇怪的事情。
希望對您有幫助,朱利安
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.