IPA過去問ドリル

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

テクノロジ/開発技術

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。この帳票出力ストラテジクラスの説明のうち,適切なものはどれか。

平成25年度 秋期 システムアーキテクト試験 午前Ⅱ 問4の図

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

正解:イ

解説

ストラテジパターンは,アルゴリズム(処理方式)をカプセル化し,実行時に切り替え可能にするデザインパターンです。設問の図では,帳票出力ストラテジという抽象クラス(インタフェース)を,PDF 帳票出力ストラテジ,HTML 帳票出力ストラテジという具象クラスが実装(継承)しており,コンテキストクラスはこれらの具象クラスを意識せずに帳票出力ストラテジを呼び出します。このような構造では,新しい出力フォーマット(アルゴリズム)を追加したい場合,新たな具象ストラテジクラスを追加するだけでよく,既存のコンテキストクラスや他のストラテジクラスに変更を加える必要がないため,新規フォーマット用のアルゴリズムの追加が容易になります。

選択肢ごとの解説

  • 誤り。クライアント(コンテキスト)がどのフォーマットに対応するストラテジクラスかを意識せずに利用できることはストラテジパターンの利点の一つですが,これは帳票出力ストラテジクラス(抽象クラス)自体の説明というよりコンテキストとの関係の説明であり,設問が問う帳票出力ストラテジクラスの説明としては,イの記述の方がより直接的です。
  • 正しい。ストラテジパターンでは,新しいアルゴリズム(フォーマット)に対応する具象ストラテジクラスを追加するだけで機能拡張でき,新規フォーマット用のアルゴリズムの追加が容易です。
  • 誤り。どのフォーマットで出力するかの振分けは,帳票出力ストラテジクラス自身ではなく,具体的な具象クラスを選択・保持するコンテキストクラス側の責務です。
  • 誤り。帳票出力のアルゴリズムは,コンテキストクラスではなく,PDF 帳票出力ストラテジや HTML 帳票出力ストラテジなどの具象ストラテジクラスの中に記述されます。
システムアーキテクトの過去問を演習モードで解く