服务是否应该访问其他服务或仅访问存储库
本文关键字:服务 访问 存储 其他 是否 | 更新日期: 2023-09-27 18:31:03
例如,客户服务有一个取消该客户特定订单的方法:
public class CustomerService : ICustomerService<Customer>
{
public void CancelOrder(int orderNo)
{
//customerRepository here...
}
}
然后,用于批处理的另一个服务也可以取消多个订单:
public class BatchService : IBatchService
{
public void CancelOrders(params int[] orderNos)
{
//What here?
}
}
取消客户订单的代码位于 CustomerService
.BatchService
应该调用CustomerService.CancelOrder
还是也应该只使用客户存储库?
我不会写两次取消逻辑。你在哪里拥有它取决于你,但考虑到你当前的结构,我会将ICustomerService注入到BatchService中。所以类可能看起来像
public class BatchService : IBatchService
{
public ICustomerService<Customer> CustService { get; set; }
public void CancelOrders(params int[] orderNos)
{
foreach (int orderNo in orderNos)
CustService.CancelOrder(orderNo);
}
}