Strategy とは?
Strategy パターンは、アルゴリズムをカプセル化し、それらをオブジェクトとして扱うことで、アルゴリズムを動的に選択できるデザインパターンです。このパターンを使用すると、特定のタスクの実行方法を簡単に変更したり、拡張したりできます。なぜ Strategy が重要なのか?
- 柔軟性の向上: アルゴリズムを切り替えることができ、システムの柔軟性が向上します。
- コードの再利用: 共通のインターフェースを持つことで、異なるアルゴリズムを簡単に再利用できます。
- 拡張性: 新しいアルゴリズムを追加する際に、既存のコードに影響を与えずに拡張が可能です。
修正前のコード
以下のコードは、異なるタイプの支払いを処理する単純な例です。修正前のコードでは、新しい支払い方法を追加するたびにPaymentProcessorクラスを変更する必要があります。
問題点
- オープン・クローズド違反: 新しい支払い方法を追加するたびに
PaymentProcessorクラスを変更する必要がある。 - メンテナンス性の低下: 支払い方法が増えるたびに、条件分岐が複雑化する。
- 再利用性の欠如: 支払い処理のロジックが
PaymentProcessorにハードコーディングされている。
修正後のコード
Strategy パターンを使って、支払い処理を改善した例です。解決された問題
- オープン・クローズド原則の遵守: 支払い方法を追加する際に
PaymentProcessorを変更する必要がなくなりました。 - メンテナンス性の向上: 条件分岐がなくなり、コードがシンプルになりました。
- 再利用性の向上: 各支払い方法は独立したクラスとして定義されているため、他のコンテキストでも再利用可能です。