Strategyパターン

2020/11/01 06:43

GoFデザインパターンのStrategyパターンを動画でわかりやすく解説しています。状況に応じて一部のロジックを差し替えたい場合に重宝します。12分の動画です。

Strategyパターンとは

クラスの利用方法を変えることなく、状況に応じて一部の内部ロジックを切り替えたくなるような場合に、それぞれのロジックを共通のインターフェース( Strategy Interface )を持つクラスとして作成し、ロジッククラス( Concrete Strategy Class )のインスタンスをコンポジションとして利用して切り替えます。

内部ロジックを切り替えるのに煩雑なif文を書くような事が不要になり、それぞれのロジックの種類ごとにクラスを作成する事でロジックの凝集が促進されます。

類似するパターンとの関係

TemplateMethodパターンとの関係

継承とコンポジションの対比として考えるとTemplateMethodパターンと類似性があります。

簡単なものであればTemplateMethodパターンのように継承で実装しても大きな課題が発生しないこともありますが、複数のロジックの組み合わせが発生したりするなど規模が大きくなってくると、継承だけでは処理が煩雑になる事があります。

Stateパターンとの関係

クラスの構造としてはStateパターンとに通ったものになります。Strategyパターンの場合には「ロジックの柔軟な切り替え」が目的であるのに対し、Stateパターンの場合には「状態をオブジェクトとして表現する」という目的の違いがあります。

解説に利用したコード ~ Sample code ~

https://github.com/CircleAround/pgonline/blob/master/src/20201024storategy/20201024storategy.ts