PHP 中的觀察者模式是一種設計模式,允許觀察者訂閱主題的狀態變化並做出回應。當主題狀態更改時,它會通知觀察者,觀察者可以相應地更新自己:主題類別維護一個觀察者清單並提供方法附加和刪除觀察者。主題類別提供獲取和設定狀態的方法,當狀態變更時觸發觀察者通知。觀察者類別定義了一個更新方法,在主題狀態變更時呼叫。具體觀察者類別實作更新方法以更新自己的邏輯。在實踐中,觀察者訂閱主題,當主題狀態更改時,觀察者收到通知並更新自己。
PHP 中觀察者模式運作原理
簡介
觀察者模式是一種軟體設計模式,允許物件(稱為觀察者)訂閱其他物件(稱為主題)的狀態變化並對其做出回應。當主題的狀態改變時,它會通知所有觀察者,而觀察者可以相應地更新自己。
程式碼結構
在PHP 中,我們可以使用下列類別結構來實作觀察者模式:
主題類別:
class Subject { private $observers = []; private $state; public function attach(Observer $observer) { $this->observers[] = $observer; } public function detach(Observer $observer) { $index = array_search($observer, $this->observers); if ($index !== false) { unset($this->observers[$index]); } } public function getState() { return $this->state; } public function setState($state) { $this->state = $state; $this->notifyObservers(); } private function notifyObservers() { foreach ($this->observers as $observer) { $observer->update($this); } } }
觀察者類別:
interface Observer { public function update(Subject $subject); }
#特定觀察者類別:
class ConcreteObserver1 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } } class ConcreteObserver2 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } }
實戰案例
我們可以使用以下程式碼範例來說明觀察者模式在實踐中的應用:
$subject = new Subject(); $observer1 = new ConcreteObserver1(); $observer2 = new ConcreteObserver2(); $subject->attach($observer1); $subject->attach($observer2); $subject->setState('New state'); // 触发更新 // 观察者收到更新并相应更新自己
當主題的狀態更新時,所有訂閱它的觀察者都會收到通知並相應更新自己。
以上是PHP中的觀察者模式如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!