PHP のオブザーバー パターンは、オブザーバーがトピック内の状態の変更をサブスクライブし、それに応答できるようにする設計パターンです。トピックの状態が変化すると、オブザーバーに通知され、オブザーバーはそれに応じて自分自身を更新できます。トピック クラスはオブザーバーのリストを維持し、オブザーバーを接続および削除するメソッドを提供します。トピック クラスは、状態を取得および設定するためのメソッドを提供し、状態が変化したときにオブザーバー通知をトリガーします。オブザーバー クラスは、サブジェクトの状態が変化したときに呼び出される update メソッドを定義します。具象オブザーバー クラスは、独自のロジックを更新するための update メソッドを実装します。実際には、オブザーバーはトピックをサブスクライブし、トピックの状態が変化するとオブザーバーに通知が送られ、オブザーバー自体が更新されます。
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); }
具体的なオブザーバー クラス:
りー実践的なケース
次のコード例を使用して、実際の Observer パターンの適用を説明できます:
class ConcreteObserver1 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } } class ConcreteObserver2 implements Observer { public function update(Subject $subject) { // 更新自己的逻辑 } }
トピックのステータスが更新されると、それにサブスクライブしているすべてのオブザーバーに通知が届き、それに応じて自分自身も更新されます。
以上がPHP ではオブザーバー パターンはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。