定义
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。
<?php /*主题类或称为通知类*/ class Subject { private $_observers = array(); /*注册观察者*/ public function register($obs) { $this->_observers[] = $obs; } /*触发器,更新通知*/ public function trigger() { if(!empty($this->_observers)) { foreach($this->_observers as $observer){ $observer->update(); } } } } /*定义观察者接口,update必须实现*/ interface Observer { public function update(); } class One_Observer implements Observer { public function update() { echo 'One Is Called'; } } class Two_Observer implements Observer { public function update() { echo 'Two Is Called'; } } /*客户端实现*/ $sub = new Subject; $sub->register(new One_Observer); $sub->trigger(); $sub->register(new Two_Observer); $sub->trigger();
观察者模式的关键对象是主题类Subject和观察者类Observer,一个Subject可以有任意数目的依赖他的观察者Observer,一旦Subject的状态发生了变化,所有的Observer都可以得到通知。Subject发出通知时并不需要知道谁是他的观察者,而任何一个观察者也不需要知道其他观察者的存在。
......真是又晦又涩...难懂的解释
待想出个WEB开发中比较常见的应用就能理解了