观察者模式: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都获得通知并被自动更新 。php
在观察者模式中,会改变的是主题的状态以及观察者的数目。用这个模式,你能够改变依赖于主题状态的对象,却没必要改变主题。——找出程序中会变化的方面,而后将其和固定不变的方面相分离!编程
主题和观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样能够让二者之间运做正常,又同时具备松耦合的优势! ——针对接口编程,不针对实现编程!this
观察者模式利用“组合”将许多观察者组合进主题中。对象(观察者——主题)之间的这种关系不是经过继承产生的,而是在运行时利用组合的方式产生的。 ——多用组合,少用继承!code
看代码:server
观察者 <?php abstract class EventGenerator { private $observers = array(); function addObserver(Observer $observer) { $this->observers[] = $observer; } function notify() { foreach($this->observers as $observer) { $observer->update(); } } } 发生者 interface Observer { function update($event_info = null); } 触发则会发生改变,触发改变通知的逻辑