PHP 設計模式之觀察者模式

2021-10-05 05:00:40 字數 1190 閱讀 9515

參考文章:

觀察者模式(observer),當乙個物件狀態發生改變時,依賴它的物件全部會收到通知,並自動更新。觀察者模式的核心在於subject和observer 介面。subject包含乙個給定的狀態,觀察者"訂閱"這個主題,將主題的當前狀態通知觀察者。可以認為它是乙個部落格,有很多訂閱者,會定期地為訂閱或定期閱讀部落格的各類使用者更新一組資訊。每次部落格發生改變時(其狀態改變),所有訂閱者"都會得到通知"。

設計觀察者模式是為了讓乙個物件跟蹤某個狀態,知道狀態何時改變,一旦狀態改變,所有訂閱物件都能得到通知。如果需要保證乙個狀態的一致性,但是這個給定狀態可能有多個不同的檢視,這種情況下觀察者模式就很適用,而且很有幫助。利用觀察者模式,可以維護一致性,同時記錄建立乙個給定狀態的物件的個數。

// splsubject 被觀察

// 博主, 使用者訂閱了這個博主,如果博主更新了部落格, 使用者就會收到更新的通知

class

blogger

implements

splsubject

public

function

addblog()

public

function

attach

(splobserver $observer

)public

function

detach

(splobserver $observer

)public

function

notify()

}}// 使用者1

class

user1

implements

splobserver

}// 使用者2

class

user2

implements

splobserver

}$blogger

=new

blogger()

;$blogger

->

attach

(new

user1()

);$blogger

->

attach

(new

user2()

);$blogger

->

addblog()

;

php設計模式之 觀察者模式

觀察者模式 observer 當乙個物件狀態發生改變時,依賴它的物件全部收到通知,並自動更新。抽象被觀察者 abstract class eventgenerator 通知所有觀察者 public function notify 具體被觀察者class event extends eventgene...

PHP 設計模式之觀察者模式

介紹現在有兩派,有的人建議使用設計模式,有的人不建議使用設計模式!這就向寫文章一樣,有的人喜歡文章按照套路走,比如敘事性質的文章,時間,地點,人物,事件。而有的人喜歡寫雜文或者散文,有的人喜歡寫詩詞!很多時候,我看設計模式的時候,有些設計模式只是吻合我的 習慣。但是你硬去套它,那麼反而適得其反。很多...

php 設計模式之觀察者模式

觀察者模式 1.抽象事件發生類 abstract class eventgenerator 對 所有 觀察者 進行 事件 通知 function notify 2.宣告具體事件類 class event extends eventgenerator 3.宣告 乙個 觀察者 介面 inte ce ob...