我有几个接口,iorganizations和IPeople。
如果我想返回与组织关联的人员列表,我应该在哪个接口中创建它?
结果是基于组织,但我返回的是人员列表
在IOrganisation
上执行此操作(并将IPeople
作为返回类型)。
像这样:
interface IOrganisation {
IList<IPeople> GetPeople();
}
这是因为一个组织的人是组织的财产,而不是人的财产。
这听起来应该是在IOrganization
-这是你要叫它,毕竟。您拥有的是组织,您想要人员列表-您不能从人员列表开始,因此必须是IOrganization
接口的一部分。
我发现以复数接口名称开头很奇怪-我希望IOrganization
用于单个组织,IPerson
用于单个人。
public interface IOrganization {
IList<IPerson> GetPeople();
}
首先,您可能不应该使用复数形式的接口名称。将它们命名为IOrganization和IPerson然后在IOrganisation
界面上你可能会有一个方法叫做
IEnumerable<IPerson> GetPeople()
哪个属于哪个?
在我看来,iOrganisation.People
将是一个人的列表(你的"IPeople"界面是代表一个人的列表还是一个人?)属于组织。同样,你可能有一个IPeople.Organisations
,列出了一个人所属的所有组织。两者可能有不同的底层机制——可能调用相同的查询表——这对调用代码的人来说无关紧要。
如果您认为组织是包含人员的集合,那么将其放在IOrganization
中是很直观的。它看起来像这样:
interface IOrganization
{
IList<IPeople> Members { get; }
}