戦略パターンはいつ使用されますか?
次のようなクライアント コード スニペットが表示されます。
class StrategyExample {
public static void main(String[] args) {
Context context;
// Three contexts following different strategies
context = new Context(new ConcreteStrategyAdd());
int resultA = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategySubtract());
int resultB = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategyMultiply());
int resultC = context.executeStrategy(3,4);
}
}
これを次のようにリファクタリングできるようです。
class StrategyExample {
public static void main(String[] args) {
// Three contexts following different strategies
int resultA =new ConcreteStrategyAdd().execute(3,4);
int resultB =new ConcreteStrategySubtract().execute(3,4);
int resultC =new ConcreteStrategyMultiply().execute(3,4);
}
}
コードの最初のセクションは、ウィキペディアのページから直接取得されました。大きな違いの 1 つは、コンテキストがなくなることですが、この例では何もしていません。誰かが戦略が理にかなっているより良い例を持っているかもしれません。私は通常、デザイン パターンが好きですが、これは有用性を追加することなく複雑さを追加しているようです。