观察者可以观察多个可观察物吗?

Mil*_*uzz 3 php oop design-patterns observer-pattern

试图找到一个例子,可能是我没有正确地解决它,或者我的想法过度简化了观察者模式的概念。

我想创建一个控制来自Web服务的消息的类,并且我希望该类监视许多其他操作的更改。

我所看到的观察者模式示例演示了许多观察者正在观察一个可观察对象,我是否(或者我应该)以相反的方式这样做?我还应该做什么?

Mch*_*chl 5

只需在多个Oservable实例中注册一个Observer实例。

每当Observable更新时,您可能希望将Observable实例传递给Observer,以便Observer知道哪个特定对象对其进行了更新。

一个简单的例子:

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();
Run Code Online (Sandbox Code Playgroud)

另外,您可能想查找Mediator模式

这是一个很好的实现:Symfony Event Dispatcher