平成22年度 秋期 システムアーキテクト試験 午前Ⅱ 問3
テクノロジ/開発技術デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。この帳票出力ストラテジクラスの説明として,適切なものはどれか。

出典:平成22年度 秋期 システムアーキテクト試験 午前Ⅱ 問3
- アクライアントは,どの帳票出力ストラテジクラスがどのフォーマットに対応するかを意識せずに利用できる。
- イ新規フォーマット用のアルゴリズムの追加が容易である。
- ウ帳票出力ストラテジクラスの中で,どのフォーマットで帳票を出力するかの振分けを行っている。
- エ帳票出力のアルゴリズムは,コンテキストクラスの中に記述する。
正解:イ
解説
ストラテジパターンでは,アルゴリズム(帳票出力の実装)を,共通のインタフェースをもつ複数の具象クラス(PDF帳票出力ストラテジ,HTML帳票出力ストラテジ)としてカプセル化し,コンテキストクラスはそれらを抽象クラス経由で利用する。これにより,新しい出力フォーマット用のアルゴリズムを追加する場合も,既存のクラスに手を加えずに新しい具象ストラテジクラスを追加するだけでよく,拡張が容易になる。
選択肢ごとの解説
- ア誤り。クライアントはコンテキストを通じて操作を呼び出すが,通常は利用したいフォーマットに対応するストラテジをコンテキストに設定する必要がある。
- イ正しい。新しいフォーマットに対応するには,ストラテジの抽象クラスを継承した新しい具象クラスを追加するだけでよく,既存のクラスへの影響なく拡張できる。
- ウ誤り。フォーマットの振分けは個々の具象ストラテジクラスの中ではなく,コンテキストがどのストラテジを使うかを選択することによって行われる。
- エ誤り。帳票出力のアルゴリズムは各具象ストラテジクラス(PDF帳票出力ストラテジ,HTML帳票出力ストラテジ)の中に記述され,コンテキストクラスには記述しない。