PHP 觀察者模式

2021-10-07 05:42:21 字數 1168 閱讀 8663

觀察者模式是為了讓乙個物件跟蹤某種狀態,一旦狀態改變,所有的訂閱物件都能受到通知。

就是為了解決多個物件跟蹤同乙個狀態的問題,將跟蹤狀態的任務交給乙個物件完成就可以,然後通知其他用到該狀態的物件。

php還內建了標準的觀察者設計模式的介面:splobserver、splsubject、splobjectstorage。具體情況請參照官方文件。

//訂閱者類

class subject

public function getdata()

public function attach(obsever $obsever)

public function detach(obsever $obsever)}}

public function notify()}}

//觀察者類

class obsever

public function update(subject $subject)

the subject data is

"; }

}//物件例項化

$subject = new subject();

$subject->setdata(10);

$obsever1 = new obsever("one");

$obsever2 = new obsever("two");

$obsever3 = new obsever("three");

$subject->attach($obsever1);

$subject->attach($obsever2);

$subject->attach($obsever3);

$subject->notify();

//輸出:

one the subject data is 10

two the subject data is 10

three the subject data is 10

$subject->detach($obsever2);

$subject->notify();

//輸出:

one the subject data is 10

three the subject data is 10

PHP 觀察者模式

觀察者模式 定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動重新整理 能夠便利地建立檢視目標物件狀態的物件,並且提供與核心物件非耦合的指定功能 外掛程式系統 class observerable public function removeobse...

PHP觀察者模式

我理解的觀察者模式就是,當我們觸發乙個事件的時候,想要把這個操作告訴給我想要告訴的物件,讓他們都執行這個操作,就是將他們繫結到這個事件下。1.定義乙個基類 用於新增觀察者也就是我想要通知的物件,還有通知觀察者 eventgenerator.php abstract class eventgenera...

觀察者模式 php

觀察者模式 當你的某個功能在後期可能新增很多不太相干的功能時,可以考慮使用觀察者模式,如乙個使用者登入類,後期可能要求,記錄登入使用者日誌,簡訊提醒,郵件提醒等功能.個人更願意叫他補丁模式.簡單說,就是將每個補丁定義為乙個類,這些補丁類實現同一介面,這些補丁類實現同一方法.原始類只要接收這些補丁類的...