什么让DAO回归?

时间:2015-01-25 17:46:29

标签: design-patterns dao

假设我有两个类FooBar,每个类别DAO

让我们说foo有很多bars

那么返回bars的{​​{1}}的方法应该去哪里?

foo

我的疑问是,class FooDAO def bars_from_foo(foo) # return the bars of that foo end end class BarDAO def bars_from_foo(foo) # returns the bars of that foo end end 只返回FooDAO个对象吗?或者foo仅包含FooDAO需要的方法吗?

在我看来,我选择了第一个:foo只返回FooDAO个对象。因为,该方法可以在另一个类中使用,与另一个类foo没有任何共同之处。我现在想不出一个例子。

我想阅读一些专家的意见。

1 个答案:

答案 0 :(得分:1)

有两种方法:

  • foo实际上可以在bars课程中建模Foofoo.get_bars() bars的事实:FooDAO会返回bars。然后,bar将负责通过在实例化时提取foo或使用延迟加载来确保此方法正常工作。
  • bar具有相应BarDAO的事实可被视为find_bars_by_foo_id(foo_id)的搜索条件。然后,find_bars_by_foo(foo)会有find_bars(criteria)criteria。 (这与你的第二种可能性非常相似;关键是要以正确的方式思考它。)或者,它会有一个foo_id,其中{{1}}可以设置{{1}}使用。

哪种方法最合适取决于两个类的语义以及它们之间的关系。