PHP設計模式(5)—— 觀察者模式
基本概念
整個觀察者模式,其實做的就是監聽事件
、處理事件
。
由此引出兩個角色,一個是觀察者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
參考資料
相關文章
- PHP設計模式-觀察者模式PHP設計模式
- PHP 設計模式之觀察者模式PHP設計模式
- PHP設計模式之觀察者模式PHP設計模式
- PHP 設計模式之——觀察者模式PHP設計模式
- php模式設計之 觀察者模式PHP模式
- 設計模式----觀察者模式設計模式
- 設計模式 —— 觀察者模式設計模式
- 設計模式(觀察者模式)設計模式
- 設計模式——觀察者模式設計模式
- 設計模式-觀察者模式設計模式
- 設計模式_觀察者模式設計模式
- 【設計模式】觀察者模式設計模式
- 設計模式(十六)觀察者模式設計模式
- 設計模式(9) 觀察者模式設計模式
- 設計模式-觀察者模式上設計模式
- 設計模式-觀察者模式下設計模式
- Java設計模式-觀察者模式Java設計模式
- 設計模式解析:觀察者模式設計模式
- JS設計模式(觀察者模式)JS設計模式
- 設計模式之觀察者模式設計模式
- 設計模式 #6 (觀察者模式)設計模式
- 設計模式之-觀察者模式設計模式
- 設計模式之【觀察者模式】設計模式
- javascript設計模式觀察者模式JavaScript設計模式
- 設計模式:觀察者模式(observer)設計模式Server
- PHP觀察者模式PHP模式
- 設計模式-單例模式,觀察者模式設計模式單例
- Go 設計模式之觀察者模式Go設計模式
- 設計模式之觀察者模式(一)設計模式
- JavaScript設計模式之觀察者模式JavaScript設計模式
- 簡說設計模式——觀察者模式設計模式
- 設計模式中的觀察者模式設計模式
- 設計模式實戰 - 觀察者模式設計模式
- golang設計模式之觀察者模式Golang設計模式
- Java 設計模式之《觀察者模式》Java設計模式
- 設計模式解析-1:觀察者模式設計模式
- 徒手擼設計模式-觀察者模式設計模式
- 極簡設計模式-觀察者模式設計模式