观察者和回调之间的巨大差异是什么?

时间:2010-05-17 15:11:49

标签: ruby-on-rails

观察者和回调之间的巨大差异是什么?何时何地使用哪一个?

3 个答案:

答案 0 :(得分:11)

关于分离关注点。

观察者允许您分解出不属于模型的代码。例如,User模型可能有一个回调函数,用于在保存用户记录后发送注册确认电子邮件,但您并不真正想要在模型中使用此代码,因为它与模型的用途并不直接相关。 / p>

观察者允许您进行干净的分离,因为您的模型中没有所有回调代码。观察者依赖于一个或多个模型,而不是相反。

答案 1 :(得分:0)

对我而言,这是一回事。但我更喜欢回调而不是观察者。

Observer是回调,但是在单独的模型中。

回调在模型中。所以你看到有回调,你可以破解它。

答案 2 :(得分:0)

我认为保持你的模型合理精益是很重要的。因此,当你发现你的模型变得非常漫长时,可能是时候重构它以使用观察者了。

从严格的建筑战俘(如约翰的答案中所述),它约为separation of responsibilities,但如果这是一件简单的事情,我宁愿将其粘贴在模型中。

从技术上讲,几乎没有区别。