GoFストラテジパターン(Strategy Pattern)の設計構造と拡張性

ストラテジパターン(Strategy Pattern) は、共通の処理目的をもつ一連のアルゴリズムをそれぞれ個別のクラスとしてカプセル化(具体戦略クラス)し、それらを共通の抽象インタフェース(Strategy)を通じて交換可能にするGoFデザインパターンです。 新しい帳票出力フォーマット(例: Excel出力、HTML出力など)を追加したい場合、既存のコンテキストクラスや他のストラテジクラスのコードに一切手を加えることなく、 抽象ストラテジクラスを継承した新しいサブクラスを実装して追加するだけで容易に拡張可能(開放閉鎖の原則: OCP) となります。したがって、正解は イ です。 ア: クライアントは、コンテキストに対してどの具象ストラテジ(PDF、CSVなど)を注入・適用するかを選択・指定する必要があるため、具象サブクラスを意識します。 ウ: 条件分岐によるフォーマットの振り分け処理を排除し、ポリモーフィズムによって適切なアルゴリズムを実行するのがストラテジパターンの本質です。 エ: アルゴリズム自体はコンテキストクラスではなく、各具象ストラテジクラスの中に記述します。

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

問題画像
出典令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問17
ア
クライアントは,使用したいフォーマットに対応する,帳票出力ストラテジクラスのサブクラスを意識せずに利用できる。
イ
新規フォーマット用のアルゴリズムの追加が容易である。
ウ
帳票出力ストラテジクラスの中で,どのフォーマットで帳票を出力するかの振り分けを行っている。
エ
帳票出力のアルゴリズムは,コンテキストクラスの中に記述する。