「【GoF】デザインパターン 6
レス数が950を超えています。1000を超えると書き込みができなくなります。
0970966
2011/06/02(木) 22:05:38.02ありがとうございます。
>それと、結局どこかでif……というのはちょっと違う気がする
すみません、僕の認識が間違っているのかも知れません。
実現したかったのは
switch (pattern){
case : Pattern.A : doA();
case : Pattern.B : doB();
...
}
において、メインの処理上からswitch文を消したかったのです。そこで、
interface MyStrategy { void execute(); }
class StrategyA implements MyStrategy... //doA()に相当
class StrategyB implements MyStrategy... //doB()に相当
としたのですが、結局、patternを判定する処理は必要になると思ったのです。
そこでファクトリークラスを作って、判定と生成を任せようと考えました。
Prototypeはどちらのcloneを用いるかを、やはり判定する必要があるように思います。
今思いつきましたが、Map<Pattern, MyStrategy>を最初にシングルトンで作っておけば、
MyStrategyMap.get(pattern).execute();
みたいな感じでいけなくもないですね。
あ、でもStrategyが増えるたびに、このMapの初期化処理をメンテする必要があるので微妙ですね。
すみません、お知恵を拝借できればと思います。
レス数が950を超えています。1000を超えると書き込みができなくなります。