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

C# 通过子关系访问对象的最佳模式,c#,domain-driven-design,C#,Domain Driven Design,哪一个更好?为什么 CurrentCustomer.Company.Employees.Select(x=>x.Name); 或: 其他例子: CurrentCustomer.Company.Employees.where(x=>x.Post==EmpPosts.Manager).Select(x=>x.Name); 或: 德米特法,又名“受保护的变化”。这是面向对象开发的基本原则之一 第二个更好,因为它允许更改实现 换句话说,当您公开第一个接口时,如果不更改使用它的所有

哪一个更好?为什么

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


其他例子:

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


德米特法,又名“受保护的变化”。这是面向对象开发的基本原则之一

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

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


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

编辑了我的答案。如果你仍有疑问,谷歌对于“受保护的变体”这是一个把握原则。
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
...