私は自分自身にこの質問をしましたが、これについてはまだ考えていません。戦略を自動的に見つけるファクトリを実装する方法
は何が戦略パターンを持っているとき、私は
考えています、実装の多くは、特定の戦略を取得するために、工場出荷時のパターンを使用しています。インターネット上のほとんどの工場の例では、switch文またはif文を使用しています。戦略を頻繁に変更したり追加したりしないときは、これは完全に機能します。しかし、工場が戦略を動的に見つけ出し、戦略が頻繁に変更され追加される場合はどうでしょうか。それでは、これはプログラマーの常勤です。今私は、工場を変更することなく新しい戦略を追加したいという状況があります。言い換えれば、ファクトリパターンを実装して、戦略を動的に検索する方法です。そして、私はどのように利用可能なすべての戦略をリストアップできますか?
問題
私はインターネット上でこれを見ると、私は良い適切な解決策を見つけることができません。私はこれを行うためにリフレクションライブラリを使用することを考えていますが、見た目のどこでも反射を使用することはお勧めしません。どのように動的なファクトリを実装するか。あるいは、この目的のために他のパターンがありますか?
例
工場:
public enum StrategyName { ImplementedStrategy1, ImplementedStrategy2, ImplementedStrategy3 };
public class StrategyFactory
{
public static Sniffer getInstance(StrategyName choice) {
Strategy strategy = null;
switch (choice) {
case StrategyName.ImplementedStrategy1:
strategy = new ImplementedStrategy1();
break;
case StrategyName.ImplementedStrategy2:
strategy = new ImplementedStrategy2();
break;
case StrategyName.ImplementedStrategy3:
strategy = new ImplementedStrategy3();
break;
}
return strategy;
}
}
が今どのように私はこれを動的にすることができますか?それとも私はなぜならないのですか?
これは私にとっては気分が悪いです。あなたは文脈を詳述できますか? –
コンテキストの例:さまざまなWebサイトから情報を取得するWebスクレーパー。掻き取られたウェブサイトは変更することができます。掻き取られる必要のあるすべてのウェブサイトには、他の戦略が必要です。ユーザは、彼が掻き出したいウェブサイトまたは彼が使用したい戦略を選択する。プログラマーは新しいWebページ/戦略のサポートを多くの短期間で追加する必要があります。 – botenvouwer