设计模式--观察者模式

2021-05-02

当一个对象的状态改变时,依赖他的对象全部会收到通知,并自动更新
一个事件发生后,需要进行一连串更新操作,传统的编程方式,就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后,代码会变的难以维护。这种耦合的,侵入式的增加新的逻辑需要更改事件的主体代码,观察者模式实现了低耦合,非侵入式的通知与更新机制

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();

 

{/if}