そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

デザインパターンのお勉強「Strategy Method」

引き続きデザインパターンのお勉強。

Rubyによるデザインパターン

Rubyによるデザインパターン



前回のTemplate Methodは決まった手順を踏む処理の複数のバリエーションに対応する方法論だった。

しかし、バリエーションによって手順そのものが異なるような場合に対応出来ず、また各バリエーションを実装した後で手順を追加修正するのは困難である。



そこで用いられるのが4章の「Strategy Method」である。


使いドコロ

基本的には前回のとTemplate Method同様に同じ用途に用いる複数バリエーションを持つ処理の実装に用いる。

f:id:blue1st:20130421021937p:plain

実装

前回のTemplate Methodではバリエーション毎に基底クラスを継承したクラスを用いるのに対して、今回のStrategy Methodでは開始時にバリエーション毎の処理そのものを引き渡すことにより対応する。

f:id:blue1st:20130422010332p:plain


前回のTemplate Methodでは共通の骨格に対してガワを取り替えていくイメージであるのに対して、今回のStrategy Methodでは共通のガワに対して用途に応じて骨格を入れ替えていくイメージとなる。





前回のTemplateMethodでは、バリエーションを増やす際に個々の処理の中身を記述すれば良く、最小限の実装のみで済む。
今回のStrategyMethodでは、バリエーションを増やす場合にクラスに渡すための処理全体を記述する必要性がある。
一方で手順そのものが異なるような場合も記述できるという利点がある。