OO设计:冗余显示"belongs to"关系可以吗?



如果我有一个名为Parent的类,并且它的Children存储在一个列表中,那么通过将Children存储在这个列表中,就足以建立Parent拥有这些Children并且这些Children属于Parent。但是我觉得在Child类定义中也包含Parent字段更舒服。我认为这实际上可能是必要的事情,如JPA;除此之外,这个设计选择是好的,有什么原因吗?或者它是不好的,因为它不是严格必要的?

您所指的是单链表或树与双链表或树之间的区别。它们是两种不同的数据结构,有各自的用途。没有哪一种比另一种更好,每一种都是"正确的",在需要的情况下。

换句话说,你不应该在只需要单链接结构的情况下使用双链接结构,反之亦然。

单链结构往往使用更少的内存,需要更少的工作来更新,如果你只遍历一个方向,那么就不需要双链结构。但是,如果您打算以两种方式遍历,那么使用双链接结构可能会更快。

首先,我假设这适用于某些泛型OO语言,如Java。我不知道这个问题是否有一个放之四海而皆准的答案,因为这取决于额外的联系是否真的有帮助。如果你总是通过父对象引用子对象,比如parentObj.getChildren().get(1),那么我不明白为什么有必要。这只是一个额外的东西,要记住更新/帐户,可能会不同步。

当然,在某些情况下,根据您访问事物的性质,在子类中使用这个父属性是完全可以接受的。

OOD/A在这方面很棘手——我们不想创建太多的关联,因为这会导致紧密耦合和代码容易中断,但我们也不想完全避免关联,因为这会破坏OOP的大部分效用。

两个选择是好的。有时候,当你需要编写核心层或业务层时,某些任务需要你在两边都有引用,但在其他情况下,你只需要一个。我建议你考虑一下你的业务需求是什么,然后选择一个选项来满足你的需求。

另一个需要注意的提示是:一些orm库可能会迫使您在两边都使用引用,特别是如果您在核心层和数据访问层使用业务实体时。

最新更新