什么是观察者和回调之间的大局差异?何时何地使用它们?
这是关于责任分离的问题。
观察者模式允许你分离那些不应该在模型中出现的代码。例如,一个 User
模型可能会有一个回调函数,在用户记录保存后发送注册确认电子邮件,但你并不希望将此代码直接放在模型中,因为它与模型的目的无直接关系。
观察者模式允许你实现这种干净的分离,因为你不必将所有的回调代码都放在你的模型里面。观察者依赖于一个或多个模型,而不是相反。
对我来说,这两个是一样的。但我更喜欢回调函数而不是观察者模式。
观察者模式本质上也是回调函数,只不过在一个独立的模型中。
回调函数则是在模型内部。所以你可以看到有回调函数并且可以进行修改。
我认为这很大程度上与保持模型相对简洁有关。因此,当您发现您的模型变得非常冗长时,可能是时候重构它以使用观察者了。
从严格的架构角度来看(如John的回答中所述),它涉及责任分离,但如果这只是一个简单的事情,我更喜欢将其放在模型中。
技术上几乎没有区别。