gpt4 book ai didi

c# - 如何实现一个自动寻找策略的工厂

转载 作者:太空狗 更新时间:2023-10-29 23:20:41 26 4
gpt4 key购买 nike

我问过自己这个问题,但我还没有想完。

我在想什么

当您拥有策略模式时,许多实现还使用工厂模式来检索特定策略。 Internet 上的大多数工厂示例都使用 switch 或 if 语句。当您不经常更改或添加策略时,这非常有效。但是,如果工厂用于动态查找策略并且策略经常更改和添加怎么办。那么这就是程序员的全职工作。现在我有一种情况,我只想添加一个新策略而不必更改工厂。换句话说,你如何实现工厂模式,以便它动态地搜索策略。以及如何列出所有可用的策略。

问题

当我在互联网上寻找这个时,我找不到合适的解决方案。我正在考虑使用反射库来执行此操作,但不建议在我看到的任何地方都使用反射。那么如何实现动态工厂。或者是否有其他模式可用于此目的?

示例

策略: enter image description here

工厂:

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;
}
}

现在我怎样才能使它动态化?或者为什么我不应该?

最佳答案

让您的 ImplementedStrategy 合约包含一个 IsGoodMatch(params) 方法。然后,您只需遍历您的策略集合,对每个策略调用 IsGoodMatch,直到获得一个(或多个)结果,然后使用该策略。

关于c# - 如何实现一个自动寻找策略的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40157600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com