观察者模式
/** * 观察者模式 观察者监听事件发生者(被观察者) 如果事件发生者发生改变的话要通知所有的观察者 */ class Event extends EventGenerator { /** * eg:用户下单之后->商品库存减1->通知商家有新订单->通知快递小哥有新快递->通知客户订单已经生效 */ function tirgger() { echo "用户下单了<br />\n"; $this->notify(); } } // 事件产生者(被观察者)基类 abstract class EventGenerator { // 观察者数组 private $servers; // 增加观察者 function addObServer( Observer $server ) { $this->servers[] = $server; } // 通知观察者 function notify() { foreach ($this->servers as $server) { $server->update(); } } } // 观察者基类 interface Observer { function update(); } // 商品 class Goods implements Observer { function update() { echo "库存减1<br />\n"; } } // 商家 class Store implements Observer { function update() { echo "有客户下单啦<br />\n"; } } // 快递 class Express implements Observer { function update() { echo "您有新订单啦,请及时配送<br />\n"; } } // 快递 class User implements Observer { function update() { echo "您的订单配送中,请耐心等待<br />\n"; } } $event = new Event(); $event->addObServer( new Goods ); $event->addObServer( new Store ); $event->addObServer( new Express ); $event->addObServer( new User ); $event->tirgger();