AUシステム監査技術者試験 午前Ⅱ

平成30年度春期 システム監査技術者 午前Ⅱ 問22

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

デザインパターンの一つであるObserverパターンを利用して実現できることはどれか。

選択肢

  1. ア
    あるオブジェクトの状態が変化したときに,それに依存する全てのオブジェクトに自動的に通知する。
  2. イ
    ある機能をもつオブジェクトを新しいオブジェクトでラップし,動的に機能を拡張する。
  3. ウ
    あるクラスのインスタンスが一つしか存在しないことを保証する。
  4. エ
    配列や集合のような実装の異なるコンテナに対し,同一のインタフェースでアクセスする。
解き方のヒントを見る

適用場面を整理する視点

デザインパターンを考えるときは、名称や印象だけで判断せず、設計上どの変化や負担を扱おうとしているかに注目し、責務の置き場所との対応を丁寧かつ慎重に確認します。

この問題で問われていること

一つの観点として、設計上の変化の起点と、それを受け持つ責務の関係を見ます。誰が何を知り、どこを変更しやすくする意図なのかを、問題の文脈に沿って整理してください。

視点

適用場面は、用語の暗記ではなく、変化しそうな部分と責務の分け方を結び付けて考えます。まず設計上の課題を短く言い換え、その課題に対して構造をどう整理する発想なのかを確認します。

確認ポイント

  • 設計上、将来変わりやすいものは何か
  • その変化に関する責務を誰が担っているか
  • 問題文の状況と設計上の課題が対応しているか
正解と解説を見る

正解

ア

解説

Observerパターンは、あるオブジェクトの状態変化を、それに依存する複数のオブジェクトへ自動的に通知するためのデザインパターンです。通知対象を柔軟に追加・削除できる。

理由

Observerパターンでは、状態を管理するSubjectと、変化を受け取るObserverを分離する。Subjectの状態が変化したとき、登録されたObserverへ自動的に通知することで、依存オブジェクト間の連携を実現する。

比較

機能をラップして動的に拡張するのはDecorator、インスタンスを一つに制限するのはSingleton、異なるコンテナを共通の方法で走査するのはIteratorの役割です。

選択肢ア(正解)

これは正解だよ。Observerパターンは、状態を持つオブジェクトの変化を、それに依存する複数のオブジェクトへ自動的に通知するための設計である。SubjectとObserverを分離でき、通知を受ける側を追加・削除しやすくする点も、この説明と一致する。

選択肢イ

これは不正解だよ。ある機能をもつオブジェクトを新しいオブジェクトでラップし、動的に機能を拡張する説明はDecoratorパターンに該当する。Observerの中心的な目的は、状態変化を依存オブジェクトへ通知することであり、ラップによる機能追加ではない。

選択肢ウ

これは不正解だよ。あるクラスのインスタンスが一つしか存在しないことを保証する説明はSingletonパターンの目的である。Observerはインスタンス数を制限するパターンではなく、状態を管理する側と通知を受ける側の連携を扱う。

選択肢エ

これは不正解だよ。配列や集合のように実装の異なるコンテナへ同一のインタフェースでアクセスする説明はIteratorパターンに該当する。Observerはコンテナの走査方法を統一するものではなく、状態変化の通知関係を構築する。

学習のポイント

Observer、Decorator、Singleton、Iteratorの目的を、通知・機能拡張・生成制限・走査方法の違いで整理する。

出典:独立行政法人 情報処理推進機構(IPA)平成30年度春期 システム監査技術者試験 午前Ⅱ 問22(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針