本文へスキップ

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

おぶざーばーぱたーん

オブザーバーパターンとは、あるオブジェクト状態変化を、登録された複数の依存オブジェクトに自動的に通知・更新するソフトウェア設計パターンです。

オブザーバーパターン(Observer Pattern)は、GoF(Gang of Four)が提唱したソフトウェアデザインパターンのひとつで、「振る舞いパターン」に分類されます。あるオブジェクトサブジェクト/パブリッシャー)の状態が変化したとき、そのオブジェクトに登録されている複数の依存オブジェクト(オブザーバー/サブスクライバー)へ自動的に通知を送り、各オブザーバーが自律的に更新処理を行う仕組みです。

このパターンは「パブリッシュ-サブスクライブ(Pub/Sub)パターン」とも密接に関連しており、疎結合な設計を実現するために広く採用されています。

主な構成要素は以下のとおりです。

  • Subject(サブジェクト):状態を持ち、オブザーバーの登録・解除・通知を管理する
  • Observer(オブザーバー):通知を受け取り処理を行うインターフェース
  • ConcreteSubject:具体的な状態を持つサブジェクトの実装
  • ConcreteObserver:具体的な処理を行うオブザーバーの実装

このパターンの利点は、サブジェクトとオブザーバーが互いの具体的な実装を知る必要がなく、疎結合を保てる点にあります。一方、オブザーバーが多数になると通知の順序や性能に影響が出ることや、循環参照による意図しない連鎖が起きるリスクもあります。

実際の応用例としては、GUIフレームワークのイベントリスナー・Reactのステート管理・メッセージキュー・ニュースフィードの購読システムなどが挙げられます。

使い方・例文

JavaScriptでボタンにaddEventListenerでクリックイベントを登録する処理は、オブザーバーパターンの典型例です。ボタン(サブジェクト)の状態変化(クリック)を、登録した関数(オブザーバー)が受け取って処理します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語