所以假设我有一个通用对象,Person。一个人有一个名字和一个性别——名字必须是一个字符串,而性别必须是male
or female
。我还有一个集合对象,PersonList,它有一个 Person 对象数组并允许对集合进行操作(例如,返回某个性别的人的列表。)
一方面,用构造函数中的数据创建 PersonList 会很好......
list = new PersonList([new Person('Alice', 'Female'), ...]);
...但是我们不知道数据是否有效。我们可以允许无效的 Person 对象进入,并在访问它们时检查它们的有效性,或者我们可以给 Person 一个 vaild() 方法并说...
list = new PersonList();
alice = new Person('Alice', 'Female');
if (alice->valid()) list->add(alice);
...或者也许我们在 add() 中检查 valid()。但是对我来说,有一个 valid() 方法似乎很奇怪。
一般来说,您将如何实例化这些对象?这是主观的事情,还是有普遍的“正确方式”?