对象依赖关系和方法签名

时间:2014-05-07 06:24:29

标签: c# asp.net-mvc design-patterns nhibernate

我正在NHibnerate中编写Web应用程序。我正在使用依赖注入,服务和存储库模式。我想知道我的服务类中的方法签名,对用户ID(版本#2)或实体(版本#1)更好吗?我看到使用版本#1将导致许多依赖于其他服务类,因为我必须加载特定实体,如客户实体对象。

public CartService {

    // this won't be necessary 
    private CustomerService _customerService; 

    public CartService(CustomerService customerService)
    {
         _customerService = customerService;
    }

    // version #1
    public void AddToCart(Customer customer, Product product){... }

    // version #2
    public void AddToCart(long cutomserId, Product product) 
    {
        var customer = _customerService.GetCustomerById(_customerId);
        ...
    }

    ... // many other methods
}  

修改即可。 对于版本#1,假设我们有其他服务(调用CarService:AddCartMethod),例如。 OrderService与方法CreateNewOrder(long customerId)在这个方法中我从存储库加载客户实体,然后调用AddToCart(客户,产品) - 假设在这个方法中客户实体已经改变了最好的平台将该客户实体保存到db将是AddCart或CreateNewOrder(调用者)方法?

0 个答案:

没有答案