ホーム > システムアーキテクト試験 > 2022年
システムアーキテクト試験 2022年 午前2 問05
デザインパターンの中のストラテジパターンを用いて、帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。

ア:クライアントは、使用したいフォーマットに対応する、帳票出カストラテジクラスのサブクラスを意識せずに利用できる。
イ:新規フォーマット用のアルゴリズムの追加が容易である。(正解)
ウ:帳票出カストラテジクラスの中で、どのフォーマットで帳票を出力するかの振り分けを行っている。
エ:帳票出力のアルゴリズムは、コンテキストクラスの中に記述する。
解説
ストラテジパターンと帳票出力クラスの設計
ストラテジパターンとは
ストラテジパターン(Strategy Pattern)は、アルゴリズムをクラスとして分離し、必要に応じて動的に切り替えることができるデザインパターンです。このパターンにより、アルゴリズムを使う側(コンテキスト)と、アルゴリズムの具体的な実装(戦略)を分離することが可能になります。
図の構成について
このクラス図では、以下のように構成されています:
- 帳票出力カストラテジ:共通のインターフェース(帳票出力)を持つ抽象クラス。- PDF帳票出力カストラテジ / HTML帳票出力カストラテジ:具体的な出力方法を実装するクラス。- コンテキスト:帳票出力カストラテジに依存し、動的に出力形式を切り替えることが可能。
解説:なぜ「新規フォーマット用のアルゴリズムの追加が容易」なのか
ストラテジパターンでは、新しいアルゴリズム(例:Excel帳票出力など)を追加する場合でも、既存のコードに影響を与えることなく、新しいクラスを作成して
帳票出力カストラテジ
を継承するだけで済みます。これは「オープン・クローズドの原則(OCP)」に従った設計であり、拡張に対して開かれ、修正に対して閉じているというメリットがあります。他の選択肢が不適切な理由(例)
- アルゴリズムの修正が容易:修正ではなく「追加」に強みを持つ点がポイントです。- 帳票出力のための操作が簡素:操作の簡素さより、設計の柔軟性が本質です。
結論
この設計は、新たな帳票フォーマットの出力処理を容易に追加できる構造であるため、選択肢 イ:「新規フォーマット用のアルゴリズムの追加が容易である」 が正解です。