>>968,969
ありがとうございます。

>それと、結局どこかで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の初期化処理をメンテする必要があるので微妙ですね。
すみません、お知恵を拝借できればと思います。