平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22
テクノロジ/開発技術デザインパターンの一つである Observer パターンを利用して実現できることはどれか。
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22
- アあるオブジェクトの状態が変化したときに,それに依存する全てのオブジェクトに自動的に通知する。
- イある機能をもつオブジェクトを新しいオブジェクトでラップし,動的に機能を拡張する。
- ウあるクラスのインスタンスが一つしか存在しないことを保証する。
- エ配列や集合のような実装の異なるコンテナに対し,同一のインタフェースでアクセスする。
正解:ア
解説
Observerパターンは,あるオブジェクト(Subject,観察対象)の状態が変化したときに,それを監視している複数のオブジェクト(Observer,観察者)に対して自動的にその変化を通知する仕組みを提供するデザインパターンです。SubjectとObserverの間を疎結合にすることによって,状態変化の発生元となるオブジェクトを変更することなく,通知を受け取るオブジェクトを自由に追加・削除できるようになります。
選択肢ごとの解説
- ア正しい。Observerパターンは,あるオブジェクトの状態が変化したときに,それに依存する全てのオブジェクト(Observer)へ自動的に変化を通知する仕組みを実現します。
- イ誤り。ある機能をもつオブジェクトを新しいオブジェクトでラップし,動的に機能を拡張することは,Decoratorパターンの説明であり,Observerパターンの説明ではありません。
- ウ誤り。あるクラスのインスタンスが一つしか存在しないことを保証することは,Singletonパターンの説明であり,Observerパターンの説明ではありません。
- エ誤り。配列や集合のような実装の異なるコンテナに対し,同一のインタフェースでアクセスすることは,Iteratorパターンの説明であり,Observerパターンの説明ではありません。