php 八大设计模式-观察者模式
定义:
观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。
目的:
一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。
场景:
观察者模式通常用在实时事件处理系统,组件间解耦,数据库驱动的消息队列。如登录(时间,次数,用户信息,日志) 创建订单(系统消息,短信,日志)
优点:
观察者模式实现了低耦合,非侵入式的通知与更新机制。
abstract class EventGenerator {
private $observers = array();
public function addObserver(Observer $observer){
$this->observers[]=$observer;
}
public function notify(){
foreach ($this->observers as $observer){
$observer->update();
}
}
}
class Event extends EventGenerator {
public function triger(){
echo "Event<br>";
}
}
interface Observer{
public function update();//这里就是在事件发生后要执行的逻辑
}
class Observer1 implements Observer {
function update(){
echo "逻辑1<br>";
}
}
class Observer2 implements Observer{
function update(){
echo "逻辑2<br>";
}
}
$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
$event->triger();
$event->notify();
运行结果: