Observerパターンとは?おぶざーばぱたーん
Observerパターンとは、被観測者(Subject)の状態変化を、登録された複数の観測者(Observer)へ自動的に通知する振る舞いのパターン。被観測者は観測者を共通のインタフェース越しにしか知らないため、通知先の型や数が変わっても被観測者側のコードは変更されない。
最終更新:2026-10-06
この語が出る過去問を解く →背景
表示や集計のように変化へ追随したい側が増えていくとき、被観測者に相手の一覧を直接持たせると、追加のたびに変更対象が中心へ集まってしまう。依存の向きを抽象へ反転させ、追随する側が自分で購読を申し出る形にすれば、中心のコードを凍結したまま周辺だけを増やせる。GUIやイベント駆動の基礎になる考え方である。
具体例
モデルの値が変わると、購読しているグラフ・一覧・ヘッダの各ビューが自動的に再描画される。JavaのPropertyChangeListenerやReactiveXの購読も同じ構造を持つ。
試験での引っ掛け
Mediatorとの取り違えが定番。Observerは被観測者から観測者への一方向の通知、Mediatorは多数のオブジェクト間の相互作用を仲介役へ集約する仕組みで、通知の向きが一方向か相互かが分岐点になる。観測者が自ら状態を問い合わせるポーリングではない点、購読の登録・解除を実行時に変えられる点、GoFの分類が振る舞いに属する点も問われる。
関連用語
出た過去問
出典:令和7年度 春期 システムアーキテクト試験 午前Ⅱ 問5(IPA)
デザインパターンの一つであるObserverパターンを利用して実現できることはどれか。
正解:あるオブジェクトの状態が変化したときに,それに依存する全てのオブジェクトに自動的に通知する。
要点:状態変化を依存先へ自動通知するのがObserverパターン
Observerパターンは、状態をもつ側(Subject)と、その変化を知りたい側(Observer)を分離し、Observerを登録しておくことで状態変化時に一斉に通知が届くようにする振る舞いのパターンである。Subjectは個々のObserverの具体的な型を知らずに済むため、通知先の追加・削除が容易になる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。