參考文章:
觀察者模式(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...