我正在尝试学习设计模式,而且我已经使用了Observer模式。我想我理解这个概念本身,但我不知道何时使用它。
我试着解释一下自己。我主要使用Web应用程序,因此,无状态应用程序。通常,客户端从浏览器发出请求(例如,更新记录)。然后操作就完成了。
让我们假设每次更新记录时都要通知某些人。在我看来,观察者模式的完美场景,但当我想到它时,它将结束如下:
但是......这样做,我必须迭代所有想要通知两次的人!
因为它是一个无状态的应用程序,所以每次都必须得到所有需要通知的人!
我不知道观察者模式对其他类型的应用程序是否更有用,但我只能以静态形式考虑这种模式,我的意思是,使Observer静态。
我知道我失去了某些东西,这是一种普遍且被接受的模式,每个人都接受它作为这个具体问题的有效解决方案。我不明白的是什么?
答案 0 :(得分:3)
首先,让我们理顺术语。
每个观察者(人)都需要在服务器上注册自己。它发送的请求主要是说“我对foo Observables感兴趣”,在这种情况下,“我对更新事件感兴趣”。服务器维护谁对哪些事件感兴趣的映射。
每次服务器进行更新时,它都会迭代更新观察者的映射,并向每个服务器发送通知。
优点是服务器及其Observables没有编译时知道Observers是谁。观察者可以在运行时自由注册(和注销)他们感兴趣的任何事件。