オブザーバーパターンとは?
おぶざーばーぱたーん
オブザーバーパターンとは、あるオブジェクトの状態変化を、登録された複数の依存オブジェクトに自動的に通知・更新するソフトウェア設計パターンです。
オブザーバーパターン(Observer Pattern)は、GoF(Gang of Four)が提唱したソフトウェアデザインパターンのひとつで、「振る舞いパターン」に分類されます。あるオブジェクト(サブジェクト/パブリッシャー)の状態が変化したとき、そのオブジェクトに登録されている複数の依存オブジェクト(オブザーバー/サブスクライバー)へ自動的に通知を送り、各オブザーバーが自律的に更新処理を行う仕組みです。
このパターンは「パブリッシュ-サブスクライブ(Pub/Sub)パターン」とも密接に関連しており、疎結合な設計を実現するために広く採用されています。
主な構成要素は以下のとおりです。
- Subject(サブジェクト):状態を持ち、オブザーバーの登録・解除・通知を管理する
- Observer(オブザーバー):通知を受け取り処理を行うインターフェース
- ConcreteSubject:具体的な状態を持つサブジェクトの実装
- ConcreteObserver:具体的な処理を行うオブザーバーの実装
このパターンの利点は、サブジェクトとオブザーバーが互いの具体的な実装を知る必要がなく、疎結合を保てる点にあります。一方、オブザーバーが多数になると通知の順序や性能に影響が出ることや、循環参照による意図しない連鎖が起きるリスクもあります。
実際の応用例としては、GUIフレームワークのイベントリスナー・Reactのステート管理・メッセージキュー・ニュースフィードの購読システムなどが挙げられます。
使い方・例文
JavaScriptでボタンにaddEventListenerでクリックイベントを登録する処理は、オブザーバーパターンの典型例です。ボタン(サブジェクト)の状態変化(クリック)を、登録した関数(オブザーバー)が受け取って処理します。
この用語をシェア
最終更新: