![]() |
1
11
好问题。纯粹的多对多关系实际上非常罕见,通常引入一个中间对象来对关系本身建模会有帮助。如果(当!)出现了需要捕获关系属性的用例(例如,子/父关系是否是自然的、代理的、收养的等)。 所以,除了已经标识的人、父实体和子实体之外,让我们引入一个名为parentchildrelationship的对象。 parentchildrelationship的实例将只引用一个父类和一个子类,父类和子类都将包含这些实体的集合。 然后,最好确定使用这些实体的用例,并添加适当的帮助器方法来维护对象间引用。 在下面的示例中,我刚刚选择将public addchild方法添加到父方法。
|
![]() |
2
2
当您不知道父级时,父级可以为空。 没有子项时,子项可以为空。 因为每个孩子都是一个人,所以它可以有父母或自己的孩子。 在您提供关于如何使用或持久化它的更详细的用例场景之前,这个设计本身是很好的。 |
![]() |
3
1
如果你能限制协会的发展方向 单程 ,你会省去很多麻烦(但这并不总是可能的)。 单向关系:
如果你想让协会也朝另一个方向发展,你也可以这样做:
但是,现在您有一个需要维护的循环引用,虽然这是可能的,但它并不是特别有效。 你可以通过让孩子们 提高事件 而不是显式地引用它们的父对象。 |
![]() |
4
1
正如johnidol所指出的那样,一个孩子在某种程度上可能成为父母。换言之,不要把父母和孩子划分为人的子类。
|
![]() |
5
1
我可以想象一个孩子也可以成为一个家长(如果他幸运的话…或者不走运,这取决于观点),所以我会说:
当新的需求出现时(相信我他们会的),你可以很容易地以任何方式扩展它。 更新 : 因此,如果你只想让孩子有父母,而另一方面,你会做如下事情:
这样,如果您想要一个iHaveFriends接口,就可以(这基本上迫使实现者将iperson列表公开为名为friends的属性)。如果你不需要它,就不要这样做,但事实上,你可以很容易地做到,只需添加一个接口,其他一切都保持不变,这意味着你有一个相当不错的可扩展模型(不一定是最好的,你知道我的意思)。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |