设计模式之观察者模式

观察者模式是我们经常用的一个模式,比如在用wcf做服务的时候通知客户端做一些操作一般用设计者模式。

当一个对象状态发生改变时,依赖她的对象全部收到通知,并自动进行更新,实现了低耦合,非侵入式更新

设计实现:

<?php
namespace observer;

//事件监听 实现添加观察者,和对观察者进行通知,以后事件类要继承这个类
abstract  class EvenGenerator{
	private $observers = array();
	function addObservers(Observer $observer){
		$this->observers[] =  $observer;
	}
	function notify(){
		foreach($this->observers as $observer){
			$observer->update();
		}
	}


}

// 观察者接口  观察者回应
interface Observer{
	function update();
}

class Even extends EvenGenerator{
	function trigger(){
		echo "有事发生啦,快通知观察者!";
		$this->notify();
	}

}

class Observer1 implements Observer{
	function update(){
		echo "\n我是观察者一号,我已收到通知,开始做出反应!";
	}
}

class Observer2 implements Observer{
	function update(){
		echo "\n我是观察者二号,我已收到通知,开始做出反应!\n";
	}
}

$event = new Even();

$event->addObservers(new Observer1);

$event->addobservers(new Observer2);

$event->trigger();


?>


运行结果:

设计模式之观察者模式_第1张图片

你可能感兴趣的:(设计模式之观察者模式)