過去問解きまくり研究所 ホーム

平成22年度 秋期 午前Ⅱ 問3

設計

デザインパターンに関する問題

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

クラス図(原典は図。凡例:クラスは上から「クラス名/属性/操作」の3段の箱。クラスと関連を書き写した):

コンテキスト(属性・操作の欄は空)
  ◇──→ 帳票出力ストラテジ    (コンテキスト側がひし形の集約,帳票出力ストラテジ側が矢印)

帳票出力ストラテジ
  操作:+帳票出力()

PDF帳票出力ストラテジ  ──▷ 帳票出力ストラテジ   (汎化)
  操作:+帳票出力()

HTML帳票出力ストラテジ ──▷ 帳票出力ストラテジ   (汎化)
  操作:+帳票出力()
答えと解説を見る

✓ これが正解イ新規フォーマット用のアルゴリズムの追加が容易である。

解説

サブクラスを足すだけで、新しい出力形式を追加できます。

ストラテジパターンは、切り替えたいアルゴリズムをそれぞれ別のクラスに分け、共通の操作をもつ抽象的なクラスの下に並べる設計です。図では、帳票出力ストラテジが共通の操作である帳票出力をもち、PDF帳票出力ストラテジと HTML帳票出力ストラテジが汎化の関係でそれを受け継いで、形式ごとの出力方法を実装しています。コンテキストは帳票出力ストラテジを集約の形で参照し、その操作を呼ぶだけです。このため、新しい形式に対応したいときは、帳票出力ストラテジを受け継ぐサブクラスを一つ追加すればよく、コンテキストや既存の形式のクラスを書き換えずに済みます。アルゴリズムをクラスとして差し替え可能にするのがこのパターンの狙いだと押さえると選べます。

ほかの選択肢はなぜ違うのか

この問題の用語

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

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)