1. 程式人生 > >php設計模式-觀察者模式

php設計模式-觀察者模式

觀察者模式(Observer),當一個物件狀態發生改變時,依賴它的物件全部會收到通知,並自動更新。

【觀察者模式的優點和缺點】

觀察者模式的優點:

1.觀察者和主題之間的耦合度較小;
2.支援廣播通訊;

觀察者模式的缺點:

由於觀察者並不知道其它觀察者的存在,它可能對改變目標的最終代價一無所知。這可能會引起意外的更新。

【觀察者模式適用場景】

當一個抽象模型有兩個方面,其中一個方面依賴於另一個方面。
當對一個物件的改變需要同時改變其它物件,而不知道具體有多少個物件待改變。
當一個物件必須通知其它物件,而它又不能假定其它物件是誰。換句話說,你不希望這些物件是緊密耦合的。

觀察者模式在PHP中的應用場合:在web開發中觀察者應用的方面很多
典型的:使用者註冊(驗證郵件,使用者資訊啟用),購物網站下單時郵件/簡訊通知等

程式碼例項

SplSubject介面 被觀察的物件

interface SplSubject
{
    public function attach(SplObserver $observer);
    public function detach(SplObserver $observer);
    public function notify();
}

SplObserver 介面,它代表著充當觀察者的物件

interface SplObserver
{   
    public function update(SplSubject $subject);
}