我似乎找不到正确的措词来搜索网络并获得正确的答案。因此,每当我有一个包含其他对象集合的对象时,我都会迷上如何设计关系的方法。

例如,一个非常基本的示例是。


因此,我有一个可以拥有许多地址的人。我知道让PersonDAO也创建地址并将其放置在Person对象中是不正确的,那么我将如何为Person对象使用一个方法(listAll())但又将它们的所有地址都返回呢?

我希望这是有道理的,如果需要澄清,请告诉我。

另外,我在网上只能找到一个看上去有些准确的东西是使用CollectionsDAO,但我不确定该如何工作,所以我将其以红色表示。

最佳答案

一种解决方案是让PersonDAO调用AddressDAO以获取地址并将其放入返回的Person对象中。这将放在单独的listFull()方法内或类似的内容内。如果“地址”是“人”的一部分,我不知道从概念上讲,PersonDAO对象也知道如何用地址记录填充“人”实例是错误的。并且使PersonDAO调用AddressDAO进行实际的数据访问似乎可以很好地解决问题(每个DAO访问它自己的表并将其委托给其他DAO,在这里需要获取更多数据以返回更复杂的结果)。

正如@Thieson所暗示的那样,您必须问自己为什么要烦恼派生。如果确实有功能要在它们之间继承和重用,那就很好。但是否则可能没有意义。我已经看到许多具有大量对象的系统,其中各个DAO对象之间没有直接的层次结构(例如broadleaf)。

您可能会在这里得到几个答案,告诉您只是做最有意义的事情,这绝对是个好建议。

10-06 05:00