我有一个名为 List 的控制器 POST 操作,它接受一个状态变量,该变量可以是以下值 {“all”、“active”、“inactive}。然后我根据“status”内部的值进行存储库调用控制器。控制器看起来像这样:
[HttpPost]
public ActionResult List(string status)
{
return View(GetJobTitlesByStatus(status));
}
private IList<JobTitle> GetJobTitlesByStatus(string status)
{
IList<JobTitle> jobTitles;
switch (status)
{
case "All":
jobTitles = jobTitleRepository.GetAll();
break;
case "Active":
jobTitles = jobTitleRepository.GetActive();
break;
case "Inactive":
jobTitles = jobTitleRepository.GetInactive();
break;
default:
jobTitles = new List<JobTitle>();
break;
}
}
我认为 switch 语句中的代码太多而不能放在控制器中,所以我将其提取到服务中,然后该服务进行适当的存储库调用。例如:
public class JobTitleService : JobTitleRepository, IJobTitleService, IJobTitleRepository
{
public JobTitleService(ISession session) : base(session) { }
public IList<JobTitle> GetJobTitlesByStatus(string status)
{
IList<JobTitle> jobTitles;
switch (status)
{
case "All":
jobTitles = base.GetAll();
break;
case "Active":
jobTitles = base.GetActive();
break;
case "Inactive":
jobTitles = base.GetInactive();
break;
default:
jobTitles = new List<JobTitle>();
break;
}
return jobTitles;
}
}
我个人认为这很好用,特别是因为我使用依赖注入将服务放入控制器。我有以下问题:
1)您认为从控制器中提取switch语句逻辑是一个好主意吗?
2)您是否认为让 JobTitleService 从 JobTitleRepository 继承比将 IJobTitleRepository 传递给 Service 的构造函数(使用依赖注入)更好?
3) 用于 JobTitleService 的设计模式是否有特殊名称?