我正在尝试学习设计模式,并且我使用了观察者模式。我想我理解这个概念本身,但我不知道什么时候使用它。
我试着解释一下自己。我主要使用 Web 应用程序,因此,无状态应用程序。通常,客户端从浏览器发出请求(例如,更新一条记录)。则操作完成。
假设我想在每次更新记录时通知一些人。在我看来,Observer patter 的完美场景,但当我想到它时,它会像这样结束:
- 用户请求更新。
- 获取所有需要通知的人。
- 将所有需要通知的人员放入观察者中。
- 进行更新。 (这也将为观察者模式发出通知)。
但是......这样做,我必须迭代所有我想通知的人两次!
而且因为它是一个无状态的应用程序,所以我每次都必须去找所有需要通知的人!
我不知道观察者模式是否对其他类型的应用程序更有用,但我只能以静态形式考虑这种模式,我的意思是,使观察者成为静态的。
我知道我失去了一些东西,这是一个普遍且被接受的模式,每个人都接受它作为这个具体问题的有效解决方案。我不明白什么?
最佳答案
首先,让我们理清术语。
- 每个希望收到通知的人都是一个观察者。
- 可以触发通知的每种类型的事件都是一个Observable。
每个Observer(人)都需要向服务器注册自己。它发送一个请求,本质上是说“我对 foo Observables 感兴趣”,在本例中是“我对更新事件感兴趣”。服务器维护谁对哪些事件感兴趣的映射。
每次服务器进行更新时,它都会遍历更新观察者的映射并向每个观察者发送通知。
优点是服务器及其 Observables 在编译时不知道谁是观察者。观察者可以在运行时为他们感兴趣的任何事件自由注册(和注销)自己。
关于rest - 休息应用程序中的观察者设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622481/