当一个对象的状态改变时,依赖他的对象全部会收到通知,并自动更新
一个事件发生后,需要进行一连串更新操作,传统的编程方式,就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后,代码会变的难以维护。这种耦合的,侵入式的增加新的逻辑需要更改事件的主体代码,观察者模式实现了低耦合,非侵入式的通知与更新机制
interface Observer
{
public function update($datas = null);
}
class Observer1 implements Observer
{
public function update($datas = null)
{
var_dump('观察者1', $datas);
}
}
class Observer2 implements Observer
{
public function update($datas = null)
{
var_dump('观察者2', $datas);
}
}
abstract class YewuGenerator
{
private $_observers = array();
public function addObserver(Observer $observer)
{
$this->_observers[] = $observer;
}
public function notify($datas = null)
{
foreach ($this->_observers as $observer) {
$observer->update($datas);
}
}
}
class Yewu extends YewuGenerator
{
public function deal()
{
$datas = '111';
echo '数据处理完成';
$this->notify($datas);
}
}
$yewu = new Yewu();
$yewu->deal();