【发布时间】:2010-11-04 23:08:49
【问题描述】:
我对 OO 设计过程还很陌生,所以请多多包涵……
我有两个实体需要建模为类,分别称为 Parent 和 Child(它与实际问题域足够接近)。一位父母将有一个或多个孩子——我对这个应用程序,对没有孩子的父母不感兴趣。
我的大脑要去哪里吃午饭是因为我需要能够从另一个中找到任何一个。在我的数据库中,我可以使用正常的外键关系来实现这一点,并且 SQL 的基于集合的性质使得查找给定父级的所有子级或给定子级的父级变得容易。但作为对象...?
我认为父母应该携带一个孩子的集合(列表,随便什么)。我也认为每个孩子都应该引用它的父母。然而,引用的循环性质让我很头疼。
我是:
- 走在正确的轨道上?
- 完全脱离基地?如果是这样,我应该采取哪些不同的做法?
这几乎肯定会在 VB.NET 中实现,但我还没有削减代码。
8 个答案后编辑:
谢谢大家。很难只选择一个答案来接受。
澄清答案中被质疑的几件事:
- 父母和孩子有很大的不同 实体——没有继承 完全的关系。我选择了 我做的名字是因为它们是 真的非常接近现实世界 问题域,现在看到它是 来自 OO 的混淆源 观点。
- 层次只有一层——孩子永远不会有孩子 在应用程序中。
再次感谢。
【问题讨论】:
-
孩子也可以有孩子,还是单层等级?如果它是多层次的,那么你需要看看复合模式。
-
这不只是节点中链接存储的时间与空间问题吗?取决于约束...如果空间不是问题,只要它们具有完整性,存储链接就可以了
-
@Harper Shelby -- 它是单级的。孩子永远不会有自己的孩子(在这个应用程序中)。不过,这是个好问题。
标签: data-structures oop tree class-design