<?php
/** * 觀察者模式應用場景例項
* *
* 場景描述:
* 哈票以購票為核心業務 ( 此模式不限於該業務 ) ,但圍繞購票會產生不同的其他邏輯,如:
* 1 、購票後記錄文字日誌
* 2 、購票後記錄資料庫日誌
* 3 、購票後傳送簡訊
* 4 、購票送抵扣卷、兌換卷、積分
* 5 、其他各類活動等
* * 傳統解決方案 :
* 在購票邏輯等類內部增加相關**,完成各種邏輯。
* * 存在問題:
* 1 、一旦某個業務邏輯發生改變,如購票業務中增加其他業務邏輯,需要修改購票核心檔案、甚至購票流程。
* 2 、日積月累後,檔案冗長,導致後續維護困難。
* * 存在問題原因主要是程式的 " 緊密耦合 " ,使用觀察模式將目前的業務邏輯優化成 " 松耦合 " ,達到易維護、易修改的目的,
* 同時也符合面向介面程式設計的思想。
* * 觀察者模式典型實現方式:
* 1 、定義 2 個介面:觀察者(通知)介面、被觀察者(主題)介面
* 2 、定義 2 個類,觀察者物件實現觀察者介面、主題類實現被觀者介面
* 3 、主題類註冊自己需要通知的觀察者
* 4 、主題類某個業務邏輯發生時通知觀察者物件,每個觀察者執行自己的業務邏輯。
* * 示例:如以下**
* */
#***************==== 定義觀察者、被觀察者介面 **********==
/** *
* 觀察者介面 ( 通知介面 )
* */
inte***ce iticketobserver // 觀察者介面
/*** * 主題介面
* */
inte***ce iticketobservable // 被觀察物件介面
#******************** 主題類實現 ********************====
/** *
* 主題類(購票)
* */
class hipiaobuy implements iticketobservable
// 新增通知
public function addobserver($observer) // 新增 n 個通知}
#************************* 定義多個通知 ********************
// 簡訊日誌通知
class hipiaomsm implements iticketobserver
}// 文字日誌通知
class hipiaotxt implements iticketobserver
}// 抵扣卷贈送通知
class hipiaodikou implements iticketobserver
}#*************************=== 使用者購票 ********************
$buy = new hipiaobuy ();
$buy->addobserver ( new hipiaomsm () ); // 根據不同業務邏輯加入各種通知
$buy->addobserver ( new hipiaotxt () );
$buy->addobserver ( new hipiaodikou () );
// 購票
$buy->buyticket ( " 一排一號 " );
?>
觀察者模式應用場景例項
觀察者模式應用場景例項 場景描述 哈票以購票為核心業務 此模式不限於該業務 但圍繞購票會產生不同的其他邏輯,如 1 購票後記錄文字日誌 2 購票後記錄資料庫日誌 3 購票後傳送簡訊 4 購票送抵扣卷 兌換卷 積分 5 其他各類活動等 傳統解決方案 在購票邏輯等類內部增加相關 完成各種邏輯。存在問題 ...
觀察者模式的應用
在層與層之間如果存在著直接的相互依賴的關係,那麼可以利用觀察者模式將直接的依賴關係轉化成間接的依賴關係,並且用這種模式降低層與層之間的偶合度.class fg o sgobserver 註冊為作業系統的接收者的物件通過該介面來接收系統訊息 virtual void o essage fg messa...
C 觀察者模式例項介紹
觀察者模式 觀察者模式 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主體物件,這個主題物件在狀態發生變化時,會通知所有觀察者。當乙個物件改變需要同時改變其他物件,而且他不知道具體有多少物件需要改變的時候,應該考慮使用觀察者模式。觀察者結構圖 使用場景 老闆回來通知員工需要進入工作狀態。...