bot*_*wer 5 c# oop design-patterns
我问自己这个问题,我还没有想到这个.
我在想什么
当您拥有策略模式时,许多实现也使用工厂模式来检索特定策略.互联网上的大多数工厂示例都使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我该如何让这种动态变化?或者为什么我不应该?
让你的ImplementedStrategy合同包含一个IsGoodMatch(params)方法。然后,您只需迭代策略集合,调用IsGoodMatch每一个策略,直到获得一个(或多个)结果,然后使用该策略。
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |