オブザーバーパターンの実装方法

PHPでは、オブザーバーパターンは次の手順で実装できます。

  1. サブジェクト(Subject)クラスを作成し、オブザーバーのリストを保持し、オブザーバーを登録、削除、通知するためのメソッドを定義します。
class Subject {
    private $observers = [];

    public function registerObserver($observer) {
        $this->observers[] = $observer;
    }

    public function removeObserver($observer) {
        $index = array_search($observer, $this->observers);
        if ($index !== false) {
            unset($this->observers[$index]);
        }
    }

    public function notifyObservers($data) {
        foreach ($this->observers as $observer) {
            $observer->update($data);
        }
    }
}
  1. 主題からの通知を受け取るメソッドを定義する Observer インターフェイスまたは抽象クラスを作成します。
interface Observer {
    public function update($data);
}
  1. 具体的なオブザーバークラスを作成し、Observerインターフェースを実装またはObserver抽象クラスを継承し、updateメソッドにおいてオブザーバーの具体的な振る舞いを定義します。
class ConcreteObserver implements Observer {
    public function update($data) {
        // 观察者的具体行为,如打印收到的数据
        echo "Received data: " . $data;
    }
}
  1. トピックインスタンスを作成し、必要な時にオプザーバを登録します。
$subject = new Subject();
$observer1 = new ConcreteObserver();
$observer2 = new ConcreteObserver();

$subject->registerObserver($observer1);
$subject->registerObserver($observer2);
  1. テーマの状態が変更されたときにnotifyObserversメソッドが呼び出されて、全てのオブザーバーに通知されます。
$data = "Some data";
$subject->notifyObservers($data);

それにより、トピックの状態の変化があれば、すべての登録されたオブザーバーが通知を受け、適切な振る舞いを実行するようになります。

bannerAds