メインコンテンツへ
開発技術デザインパターン(Strategy/Singleton)

GoFのデザインパターンのうち、アルゴリズムをカプセル化してクライアントコードを変更せずに実行時に別のアルゴリズムへ切り替えられるパターンはどれか。

ア.Singletonパターン
イ.Strategyパターン正解
ウ.Observerパターン
エ.Decoratorパターン

解説

Strategyパターンはナビアプリの経路計算に例えられます。「最短距離」「最短時間」「高速道路優先」という複数の戦略(アルゴリズム)を持ち、ユーザが選択するだけで計算ロジックが切り替わります。ナビ本体(クライアント)のコードを変えずに。

なぜ イ が正解か

Strategyパターンはアルゴリズムをインターフェースで抽象化し、具体的な実装を独立したクラス(ConcreteStrategy)として定義します。Contextクラスはインターフェース経由でStrategyを呼ぶため、実行時にStrategyを差し替えることができます。利点:OCP(Open/Closed Principle)を満たし、if-elseの増殖を防ぎます。イが正解です。

なぜ ア は間違いか

Singletonパターンはインスタンスを1つに制限するパターンです。アルゴリズムの切り替えとは全く無関係です。

なぜ ウ は間違いか

Observerパターンはオブジェクト間のpub/sub通知の仕組みを定義するパターンです。アルゴリズムの切り替えではありません。

なぜ エ は間違いか

Decoratorパターンはオブジェクトに動的に機能(責任)を追加するパターンです。ラッパーを重ねて機能を拡張するアプローチであり、アルゴリズムの切り替えとは異なります。

出典: AI生成問題(学習用)