開発技術

基本情報技術者試験デザインパターン」の問題

マネジメント系開発技術難易度:normal
あるオブジェクト(被監視者)の状態が変化したとき、それに依存する複数のオブジェクト(監視者)へ自動的に変更を通知し、各監視者が自分の表示や処理を更新できるようにする。この目的に適合する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である。

開発技術の他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a2-0067

【基本情報技術者試験】デザインパターンの問題 — 解答・解説|ukamiru 過去問