假设我有两个类Foo
和Bar
,每个类别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
没有任何共同之处。我现在想不出一个例子。
我想阅读一些专家的意见。
答案 0 :(得分:1)
有两种方法:
foo
实际上可以在bars
课程中建模Foo
有foo.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}}使用。哪种方法最合适取决于两个类的语义以及它们之间的关系。