PHP設計模式(5)—— 觀察者模式
阿新 • • 發佈:2018-12-01
基本概念
整個觀察者模式,其實做的就是監聽事件
、處理事件
。
由此引出兩個角色,一個是觀察者Listener,另一個是事件處理者Handler。
例子
第一步,建立抽象事件類。
它的主要作用是提供兩個方法給具體事件類呼叫。
abstract class EventGenerator
{
// 觀察者陣列
private $observers = array();
// 新增觀察者
function addobserver(Observer $observer)
{
$this->observers[] = $observer ;
}
// 事件通知函式
function notify()
{
// 遍歷觀察者,新增事件處理
foreach($this->observers as $observer)
{
$observer->watch();
}
}
}
第二步,建立具體事件類。
它的主要作用是間接呼叫事件通知函式。
class Event extends EventGenerator
{
function trigger()
{
echo "Event<br/>";
$this->notify();
}
}
第三步,建立觀察者抽象類。
它的作用是給每個觀察者一個監聽事件的watch方法。
// 觀察者介面
interface observer
{
function watch($event_info = null);
}
第四步,建立具體的觀察者類。
它的主要作用是,進行收到事件通知的後續處理。
// 多個觀察者
class Observer1 implements observer
{
function watch($event_info = null)
{
echo "邏輯1<br/>";
}
}
class Observer2 implements observer
{
function watch($event_info = null)
{
echo "邏輯2<br/>";
}
}
第五步,使用
// 例項化具體事件類
$event = new Event;
// 新增觀察者
$event->addObserver(new Observer1);
$event->addObserver(new Observer2);
// 間接呼叫事件通知
$event->trigger();
原文地址
http://larabase.com/collection/5/post/153