Observerパターン

2020/09/29 07:56

GoFデザインパターンの一つObserverパターンについて動画でわかりやすく解説しています。「Subjectのデータが変更されたら監視しているObserverがそれに追随する」という本パターンの中心の考え方を、エクセルのような表とグラフの関係を例題としてJavaScriptのコードまで作成して確認しました。結果としてObserverの追加や変更はSubjectの変更を伴わずにできるようになります。クライアントサイドのMVCのMとVの関係を実現する際によく用いられるパターンです。10分の概念解説と、13分のコードの解説で構成されています。

Observerパターン

GoFのデザインパターンの一つです。あるオブジェクト(Subject Class)の状態が変更された際に、関連するオブジェクトがその状態に追随したい場合があります。特にUIを作成している時には、一つのデータに複数のUI部品が関連するような事も多いです。そのような時に、UI部品側がデータを監視するように実装( Observer )します。

メリット

  • データを保有しているSubjectには監視しているObserverの詳細を知らせずに作る事ができるので、Observerの追加や削除、機能の変更がSubjectに影響せず修正の範囲が明瞭になります(「拡張に対して開いていて、修正に対して閉じている」というオープン・クローズドの原則がわかりやすくイメージできる例だと思います)。
  • Observerは、別のObserverについても知らず、疎結合な状態が実現できます。

よく使われるケース

クライアントサイドのMVC(元祖MVCと呼んでも良いかもしれません)での、MとVの関係がこの形になる事が多いです。Modelの変更をViewが監視します。

解説に使用したコード

https://github.com/CircleAround/pgonline/tree/master/src/20200830_observer

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役