基本情報技術者試験「デザインパターン」の問題
あるオブジェクト(被監視者)の状態が変化したとき、それに依存する複数のオブジェクト(監視者)へ自動的に変更を通知し、各監視者が自分の表示や処理を更新できるようにする。この目的に適合するGoFのデザインパターンはどれか。
アSingletonパターン
イAdapterパターン
ウObserverパターン
エDecoratorパターン
正解
ウ.Observerパターン
Observerパターンは、状態を持つ被監視者(Subject)と、それに依存する複数の監視者(Observer)を疎結合に結び、被監視者の状態変化を登録済みの全監視者へ自動通知する。各監視者は通知を受けて自分を更新する。設問の『一対多の自動通知と更新』に正確に合致する。
?選択肢ごとの解説
ア ×Singletonパターンはインスタンスを一つに限定する生成のパターンで、状態変化の通知連携を行うものではない。
イ ×Adapterパターンは互換性のないインタフェースを変換して接続する構造のパターンで、変更通知の仕組みではない。
ウ ○Observerパターンは、状態を持つ被監視者(Subject)と、それに依存する複数の監視者(Observer)を疎結合に結び、被監視者の状態変化を登録済みの全監視者へ自動通知する。各監視者は通知を受けて自分を更新する。設問の『一対多の自動通知と更新』に正確に合致する。
エ ×Decoratorパターンはオブジェクトに機能を動的に付け加える構造のパターンで、依存先への自動通知を担うものではない。
✎くわしく
Observerは振る舞いに関するパターンで、被監視者と監視者を疎結合に保ちながら一対多の依存関係を扱う。被監視者は監視者の具体型を知らずに通知でき、監視者の追加削除が容易になる。GUIのイベント通知やパブリッシュ/サブスクライブの基礎概念であり、AdapterやDecoratorが構造の変換・拡張を担うのに対し、Observerは『変化の伝播』という振る舞いを担う点で性質が異なる。
✓本番での押さえどころ
試験のコツ
『状態変化を依存先へ自動通知』『一対多の更新』とあればObserverと判断する。
覚え方
Observer=観察者。被観察者が動けば観察者たちへ知らせる、と語の意味で覚える。
よくある誤り
構造系パターン(Adapter,Decorator)と取り違えやすい。状態変化を依存先へ通知するのは振る舞い系のObserverである。
開発技術の他の問題
アジャイル開発の手法であるスクラムにおいて、スプリントごとに動作するソフトウェアを開発チームが実際に作り上げ、その成果物をプ…ソフトウェアのテストにおいて、プログラムの内部構造には着目せず、入力に対する出力が仕様どおりであるかを検証する手法を採用した…あるシステムのファンクションポイント(FP)を見積もったところ、未調整FPは200であった。技術的複雑度を表す調整係数が0.…ソフトウェアの企画から開発・運用・保守・廃棄までの各活動について、取得者と供給者が同じ言葉で役割や作業範囲を取り決められるよ…ある開発プロジェクトでは、要件定義・設計・実装・テストの各工程を上流から下流へ順に進め、前工程の成果物を承認してから次工程へ…開発対象を複数の部分に分け、各部分について計画・リスク分析・開発・評価の活動を繰り返し、評価のたびにリスクを見極めながら少し…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a2-0067