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

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

最佳答案

通常,策略模式定义一系列算法,封装每个算法,并使它们可互换。策略使算法独立于使用该算法的客户端而变化。

我看不到任何值得为其添加另一层抽象的复杂算法

如果要封装ProcessReport行为,我将创建一个代表该行为的接口,以便可以在循环中调用IProcessReport.Process(userId)

10-04 18:44