通过子关系访问对象的最佳模式

时间:2013-09-01 07:05:22

标签: c# domain-driven-design

哪一个更好?为什么?

CurrentCustomer.Company.Employees.Select(x=>x.Name);

或者:

CurrentCustomer.GetCompanyEmployeeNames();

其他例子:

CurrentCustomer.Company.Employees.where(x=>x.Post==EmpPosts.Manager).Select(x=>x.Name);

或者:

CurrentCustomer.GetCompanyManagerNames(); 
//And Comany has : 
//GetManagerEmployeeNames(); 
//And Employee has
//GetManagerNames(); And GetEmployeeNames(); methods
...

1 个答案:

答案 0 :(得分:2)

德米特法则也称为受保护的变体。这是OO开发的GRASP原则之一。

第二个更好,因为它允许实现改变。

换句话说,当您公开第一个接口时,如果不更改使用它的所有代码,则无法更改它。其他人写了数百行代码,利用你的代码,你就被困住了。

在secod方法中,您隐藏实施,以便您可以在将来的版本中更改它,并且客户端代码不会更改。