Strategy


今回はStrategyパターンの復習です。
Strategyパターンは、アルゴリズムの切り替えを容易に行うためのパターンです。
何らかの動作をするときのアルゴリズムをクラスにして、分離させることで切り替えを容易にしています。
アルゴリズムという考え方そのものをクラスにするという考えがキモですね。
この時、アルゴリズムを表現したクラスに対しては委譲を使用します。


なぜ委譲か
これは、クラスで使用されるアルゴリズムが1種類のみなら継承でも委譲でもどちらでも良いのでしょう。
しかし、クラスで直行する2つのアルゴリズムが必要となった時、継承でアルゴリズムを保持していると派生クラスが膨大な数になります。
以上を使ってアルゴリズムを管理していればこのようなこともない、というわけです。
そもそも、基本的に切り替えを容易に吸うためのパターンなので、結びつきが強い継承をつかうよりは、結びつきの弱い以上を使うほうが自然です。


デザインパターンについて学ぶときは
「継承は強い結びつき、委譲は弱い結びつき」
という事を常に頭のどこかで意識しておくべきなのでしょう。
何故委譲を使うのか?何故継承を使うのか?
そういったことを意識しながらデザインパターンの勉強をすることで理解もより一層深まると思います。



StateとStrategy
アルゴリズム」の切り替えを行うStrategyパターンは
「状態」の切り替えを行うStateパターンとの類似が指摘されています。
これについては、Stateパターンを復讐するときに考察してみたいと思います。