自分への戒めとして書いていく。
デザインパターンとは大きく分けて2種類ある。
1つは、絶対的な目的とそれに対しての正解がある、、編。
これはSingletonパターンなどがこれにあたる。
必ずインスタンスを一つにする、という目的を果たすためのもの。
2つ目はあくまでも目的を果たそうと思ったらこんな感じになっちゃた編
これはfactory Method パターンなのがこれにあたる。
なぜこれがfactoryなのか? Templateパターンとの線引はどこなのか?
初めてやるひとはこう思うのではないか?
しかしその線引は曖昧なものであり、
必ずしも必要なものではない。。。
というよりも順番が逆なのだ。
Singletonの場合は「インスタンスを一つに」という目的を果たすためにSingletonパターンを使うが、、
factory Method パターンは「いい感じに作るという目的を果たそうとしたら図らずとも結果としてこんな感じ(構成)になっちゃった」といいう感じだ。
そしてそのあるあるを集めたのがこの「2つ目はあくまでも目的を果たそうと思ったらこんな感じになっちゃた編」パターンだ。
つまりいい感じに作った場合、結果としてfactory Method パターンになる、なったものであって、
最初から考えなしに、factory Method パターンを使おう!!っていうパターンはおかしい。
そのうちなれてきたときに「これはfactory Method パターン」がいいね!
と言えたときに頭に設計図が描けるのが「いい感じ」と言えるだろう。
なので
「わざわざfactoryMethodを経由せずにProductのサブクラスを使うほうが良くね?」
というパターンも当然ある。
(サンプルコードだけ見ているとそういうパターンもある、、、)
あくまでもあるあるなのだ。
まとめ
あまり、ガッチリとした定義はなかったりするので(いやあるのだが、、)
どこからどこまでがほにゃららパターンである!!どっからがそうでない!!?
という線引を考えなくても良いパターンもあるので、あまりそこにはまらないようにすると良い。
最近のコメント