概要
振る舞いに関するデザインパターン。
Strategyは英語で「戦略」。ここでいう「戦略」とはアルゴリズム(一連の処理)のこと。
Strategyパターンはアルゴリズムを分離(クラス化)することで、
処理の切り替えをしていこうとする考えかた。
コードの実装例
以下参照
- TechScore 10. Strategy パターン (引用:TechScore)
メリットのまとめ
- 処理をクラス化して分離しておくことで、追加の実装や変更による影響が限定される
Template Methodパターンと違う所
解決方法はちがうけれど、似ている問題はTemplate Methodパターンでも解決できる。
Template Methodパターンは、親クラスに不変の抽象的な処理を記述し、継承した子クラスが具体的な実装をして、アルゴリズムの変更に対応するものだった。Template Methodを利用することで、重複している処理を記述せずに実装することができたが、問題は、継承しているため親クラスに依存をしてしまっていること。
Strategeパターンは、継承を行わずにアルゴリズムに対応するパターン。継承じゃなくて委譲を利用するのでStrategyのほうがより影響範囲が限定されている。