概要
この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。
今回はStrategyパターンについてかきます。
Strategyパターンとは?
Strategyパターンは、アルゴリズムの切り替えを容易にするようなパターンです。 異なる処理をそれぞれ別のクラスに定義するため、 処理を動的に選択できるだけでなく、条件分岐を減らすことも可能としてします。 OCP(open/closed principle)に忠実なパターンの一つでもあります。
実装例
単純な例でStrategyパターンの実装を見てみます。
Contextクラスの実装をinterfaceを依存させることで"戦略”をクライアント側から切り替えられるようにしています。 これはよく見る実装なのではないでしょうか?
振る舞いが分離されているので、OCPに従った形になっているはず。 拡張に対しては、NotificationInterfaceの実装を追加するだけ、修正に対しては、NotificationInterfaceの実装を修正するだけ、という感じになっているかと思います。
所感
GoFは知らずしらずに利用していることがあるのでちゃんと覚えておいても損はないなーと思いました。