我正在为所有服务类使用依赖注入。我注入依赖项的大多数服务都有几个常用的依赖项,例如ILogService
,IMessageService
(用于向用户显示消息),IFileSystemService
(抽象File类,以便我可以单元测试依赖于读取文件的东西),IDateTimeService
(抽象DateTime以便我可以在单元测试期间注入日期),IConfigurationService
(这样我就可以注入应用程序单元测试期间的配置设置),等等。结果是我的服务类最终都有一堆构造函数参数,因为它们中的大多数都至少有四到五个公共依赖项,加上它们的特定依赖项(IOrderService
,ICustomerService
,等)
我一直在考虑将所有常用的依赖项放到像IEnvironmentService
这样的外观中,以减少依赖项,但这似乎违反了单一责任原则,因为新服务会有处理日志记录,消息传递,读/写文件等的方法(加上它会有这么多方法的事实看起来很糟糕)。
处理这种情况的推荐方法是什么?我试图阻止我的构造函数拥有大量参数,但也不会违反单一责任。