IPA過去問ドリル

平成27年度 秋期 システムアーキテクト試験 午前Ⅱ 問5

テクノロジ/開発技術

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。 〔クラス図の概要〕コンテキストクラスは,帳票出力ストラテジ抽象クラス(操作:帳票出力())を集約(コンテキストは抽象クラスへの参照をもつだけ)している。帳票出力ストラテジ抽象クラスを,PDF 帳票出力ストラテジクラスと HTML 帳票出力ストラテジクラスがそれぞれ継承し,帳票出力()操作を実装している。凡例:クラスはクラス名・属性・操作の 3 段で表記する。 (注:本サイトでは原問題の図を文字表記に変換しています)

出典:平成27年度 秋期 システムアーキテクト試験 午前Ⅱ 問5

正解:イ

解説

ストラテジパターンは,アルゴリズム(ここでは帳票出力の処理方式)をクラスとしてカプセル化し,コンテキストクラスがそのアルゴリズムを表すストラテジクラスを利用することによって,アルゴリズムを実行時に切り替え可能にするデザインパターンです。設問の設計では,帳票出力ストラテジという抽象クラスを PDF 帳票出力ストラテジクラスや HTML 帳票出力ストラテジクラスがそれぞれ継承・実装しており,新しいフォーマットに対応する場合は,帳票出力ストラテジ抽象クラスを継承した新しいサブクラスを追加するだけでよく,既存のクラスを変更する必要がありません。そのため,新規フォーマット用のアルゴリズムの追加が容易であるという利点があります。

選択肢ごとの解説

  • 誤り。クライアントは,コンテキストにどのストラテジ(サブクラス)を設定するかを選択する必要があり,フォーマットに対応するサブクラスを全く意識せずに利用できるわけではありません。
  • 正しい。ストラテジパターンでは,帳票出力ストラテジ抽象クラスのサブクラスを追加するだけで新しいフォーマットに対応できるため,新規フォーマット用のアルゴリズムの追加が容易です。
  • 誤り。帳票出力ストラテジクラスの中でフォーマットの振り分けを行うのではなく,コンテキストが利用するストラテジ(サブクラス)を選択することによって,出力フォーマットが決まります。
  • 誤り。帳票出力のアルゴリズムは,コンテキストクラスの中にではなく,各帳票出力ストラテジのサブクラス(PDF 帳票出力ストラテジクラス,HTML 帳票出力ストラテジクラスなど)の中に記述されます。
システムアーキテクトの過去問を演習モードで解く