观察者模式(发布-订阅模式)

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时会通知所有观察者的对象,使它们能够自动更新自己。

//主题类
abstract class ObjectEvent
{

private $_observers = array();

public function register($sub){

$this->_observers[] = $sub;

}

public function notify(){
if(!empty($this->_observers)){

foreach ($this->_observers as $observer){

$observer->update();

}

}
}



}
class Event extends ObjectEvent
{

public function trigger(){

$this->notify();

}


}

#观察者要实现的接口
interface Observerable
{
public function update();

}

class Subscriber implements Observerable
{
public function update()
{
echo '输出结果<br>';
}

}

$event = new Event();

$event->register(new Subscriber());

$event->notify();

观察者模式的关键对象是主题和观察者,一个主题可以有任意数目的依赖它的观察者,一旦主题的状态发生了改变,所有的观察者都可以得到通知。主题发出通知时并不需要知道谁是它的观察者。也就是说,具体观察者是谁,它根本不需要知道。而任何
一个具体观察者不知道也不需要知道其他观察者的存在。

什么时候使用观察者模式呢?当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式
原文地址:https://www.cnblogs.com/paulversion/p/8431374.html