哪一个更好?为什么?
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
...
答案 0 :(得分:2)
德米特法则也称为受保护的变体。这是OO开发的GRASP原则之一。
第二个更好,因为它允许实现改变。
换句话说,当您公开第一个接口时,如果不更改使用它的所有代码,则无法更改它。其他人写了数百行代码,利用你的代码,你就被困住了。
在secod方法中,您隐藏实施,以便您可以在将来的版本中更改它,并且客户端代码不会更改。