gpt4 book ai didi

c# - 我应该为此使用哪种设计模式?

转载 作者:行者123 更新时间:2023-11-30 14:15:55 25 4
gpt4 key购买 nike

我有一段逻辑需要根据类型执行一次或多次(在循环中)。策略模式在这里有意义吗?本质上:

if (type == 1)
{
ProcessReport("");
}
else if (type == 2)
{
for (int i = 0; i < numUsers; i++)
{
ProcessReport(userId);
}
}

public void ProcessReport(string id)
{
if (id == "")
{
//Send full report
}

else
{
GetReportFragment();

//Send report
}
}

最佳答案

好吧,由于您显然使用“类型代码”来区分不同的行为,因此您可以从 replacing it with subclasses (polymorphism) 开始.当存在基于类型代码的分支时,这通常是要做的第一件事。

然而,对于简单的问题,这可能有点矫枉过正。您的代码更令人反感的是:

  • 为您的类型使用魔数(Magic Number):您至少应该将它们更改为枚举以提高可读性
  • 传递空参数 ("") 以指示特定行为:如果您没有 ID,至少为“完整报告”创建一个单独的方法指定

关于c# - 我应该为此使用哪种设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8807156/

25 4 0