给出一个简单的类:
public class Person
{
public string FirstName;
public string LastName;
public string GetFullName()
{
return FirstName + LastName;
}
}
此类的用户将通过读取Xml文件或其他一些数据源来填充List<Person>
对象。填充List的逻辑应该在Person类中还是应该保留在调用类中?换句话说,Person类或调用类中是否应该有public List<Persons> GetPersons()
方法?或者数据访问者是否应该完全属于另一个类?
我知道这是一个相当简单的问题,但我只是好奇其他人通常是怎么做的。
答案 0 :(得分:4)
如果数据存储稍后更改怎么办?如果Person不再存储在XML文件中而是存储在数据库中怎么办?现在您需要再次更改Person类。我想说有一种叫做“IPeopleRetriever”的界面:
public interface IPeopleRetriever
{
IEnumerable<Person> GetPeople();
}
然后,有一个名为XMLPeopleRetriever的类:
public class XMLPeopleRetriever : IPeopleRetriever
{
public IEnumerable<Person> GetPeople() { ... }
}
这样,你的IPeopleRetriever的消费者不需要知道Person的来源。
答案 1 :(得分:0)
这取决于。对于你所说的,我会说不,并创建另一个类来填充你的Person类。但是,有时您可能希望从List<T>
返回T
。一个例子是树。你可以拥有一个带有返回相同类型的通用列表的方法的类。
public class Node()
{
public List<Node> GetChildNodes()
{
//etc...
}
}
话虽这么说,你的例子在任何方面都没有真正的递归,所以我还有另一个类实际创建List<T>
。这完全是依赖关系。如果您希望以不需要Person对象列表的方式使用您的类,那么您的类可能会不必要地创建对象。