观察者可以观察多个可观察物吗? [英] can an observer observe multiple observables?
问题描述
试图找到一个例子,可能是我没有正确地解决它,或者我的想法过度简化了观察者模式的概念.
trying to find an example of this, it's possible that I am not going the right way around it, or that my mind has over simplified the concept of the observer pattern.
我想创建一个控制来自Web服务的消息的类,并且我希望该类监视许多其他操作的更改.
I want to create a class that controls messages from a web service, and I want this class to monitor the changes of many other operations.
我所看到的观察者模式示例演示了许多观察者正在观察一个可观察对象,我(或者我应该)反过来这样做吗?我还要做什么?
The observer pattern examples I have seen demonstrate many observers watching a single observable, can I (or should I) do this the other way round? What else should I be doing?
推荐答案
只需在许多Oservable实例中注册一个Observer实例.
Just register a single Observer instance in many Oservable instances.
每当Observable更新时,您可能希望将Observable实例传递给Observer,以便Observer知道哪个特定对象对其进行了更新.
You probably will want to pass Observable instance to Observer, whenever Observable updates, so that Observer knows which specific object updated it.
一个简单的例子:
interface Observer {
public update(Observable $observable);
}
class Observable() {
private $observers = array();
public function register(Observer $observer) {
$this->observers[] = $observer;
}
public function update() {
foreach($observers as $observer) {
$observer->update($this);
}
}
}
$observer = new ObserverImplementation();
$observable1->register($observer);
$observable2->register($observer);
$observable1->update();
$observable2->update();
您还可能要查找中介者模式.
这是它的一个很好的实现: Symfony事件分派器
Here's pretty nice implementation of it: Symfony Event Dispatcher
这篇关于观察者可以观察多个可观察物吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!