/** * 观察者模式例子具体实现 */ class Event extends \Itool\EventGenerator { function trigger() { echo "Event<br/>\n"; $this->notify(); } } class BoyObserver implements Itool\Observer { function update() { echo "男孩观察者<br/>"; } } class GirlObserver implements Itool\Observer { function update() { echo "女孩观察者<br/>"; } } $event = new Event(); // 同理此处可以无限增加观察者,从而实现解耦的过程 $event->addObserver(new BoyObserver()); $event->addObserver(new GirlObserver()); $event->trigger();
<?php class Event extends \IMooc\EventGenerator { function trigger() { echo "Event<br/>\n"; $this->notify(); } } class Observer1 implements \IMooc\Observer { function update($event_info = null) { echo "逻辑1<br />\n"; } } class Observer2 implements \IMooc\Observer { function update($event_info = null) { echo "逻辑2<br />\n"; } } $event = new Event(); //$event->addObserver(new Observer1); $event->addObserver(new Observer2()); $event->trigger();
} class Event implements EventGenerator { var $observers = array(); function trigger() { echo 'this is event from class Event<br>'; } function addObserver(Observer $observer) { $this->observers[] = $observer; } function notify() { foreach ($this->observers as $key => $observer) { $observer->update(); } } } class Observer1 extends Observer { function update() { echo 'this is a logic in observer<br>'; } } $event = new Event(); $event->trigger(); $observer1 = new Observer1(); $event->addObserver($observer1); $event->notify();