【发布时间】:2014-05-09 19:03:54
【问题描述】:
我的表示层(Web 应用程序)上的控制器目前存在一些设计问题。该网站应该提供某种仪表板,显示将从多个存储库收集的所有类型的信息。我想显示最新的.. 警报、消息、时间线事件、报告统计...
public class HomeController : Controller {
public HomeController(
IAlertRepository alertRepository,
IAccountRepository accountRepository,
ITimelineRepository timelineRepository,
IReportingRepository reportRepository) {
// ...
}
}
这完全导致了构造函数过度注入,由于许多原因,这很尴尬。我怎样才能克服这个问题?显示所有信息是我们客户的要求。
【问题讨论】:
-
如果构造函数参数列表太长,那么也许您可以使用服务定位器之类的东西而不是使用构造函数注入并通过它延迟加载存储库对象?
-
HomeController做了多少工作?也许应该只提供一组通用的IRepository对象?也就是说,你有几个?如果这是一个顶级仪表板,那么只有 4 个还不错,而且非常易于管理。
标签: c# asp.net-mvc dependency-injection domain-driven-design