服务是否应该访问其他服务或仅访问存储库

本文关键字:服务 访问 存储 其他 是否 | 更新日期: 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);
    }
}