1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オブザーバーパターンとは

Last updated at Posted at 2022-04-04

オブザーバーとは

OOPの代表的なデザインパターンの一つで、

  • 一つの観測対象者オブジェクトと一つもしくは複数の観測者オブジェクトがある
  • 観測対象者が観測者全員に通知を送ることができる
  • 観測者が増えても既存のコード(観測対象者+観測者)を修正しなくてもいい
    というもの。

よくある「イベント」もこのパターンで実装されているらしい。

埋め込み方法

観測者の登録

まず、観測対象者が観測者を把握していないといけないので、以下のaddSubscriberメソッドのようなパブリックメソッドを用意しておく。観測者はそれを利用して観測対象者に自分を登録してもらう。(観測者のリストは設定ファイル等に保存しておく。)

スクリーンショット 2022-04-05 7.37.48.png

通知

観測者に以下のupdateメソッドのようなパブリックメソッドを用意しておく。通知するタイミングで観測対象者がループ処理などを使い全ての観測者のupdateを呼び出す。観測者は渡された観測対象者のインスタンスから必要な情報を取って各々必要な処理を行う。
スクリーンショット 2022-04-05 7.40.03.png

重要なのは観測者が増えてもnotifySubscribersに変更が無いように実装すること(設定ファイルからサブスクライバーのIDを読み込む→ループ処理 等)。もちろんupdateは無くてはならないのでインターフェースに書いておく

参考

めちゃめちゃわかりやすかった
https://refactoring.guru/design-patterns/observer

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?