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

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

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

最佳答案

只需在许多 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();

你也可能想查找 the Mediator pattern

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

关于php - 观察者可以观察多个观察者吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4829462/

10-11 07:15