- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最终得到了一个看起来像这样的构造函数,同时试图得到一个我可以轻松测试的对象。
public UserProvider(
IFactory<IContainer> containerFactory,
IRepositoryFactory<IUserRepository> userRepositoryFactory,
IFactory<IRoleProvider> roleProviderFactory,
IFactory<IAuthenticationProvider> authenticationProviderFactory,
IFactory<IEmailAdapter> emailAdapterFactory,
IFactory<IGuidAdapter> guidAdapterFactory,
IRepositoryFactory<IVehicleRepository> vehicleRepositoryFactory,
IRepositoryFactory<IUserVehicleRepository> userVehicleRepositoryFactory,
IFactory<IDateTimeAdapter> dateTimeAdapterFactory)
这是对象将具有的所有依赖项,并且是我拥有的最繁忙的构造函数。但是,如果有人看到这个,它真的会引发巨大的 wtf 吗?
我的目标是最终得到易于测试的逻辑。虽然它需要大量模拟,但验证我的逻辑当然非常容易。但是我担心我可能会得到太多好东西。
我很好奇这对大多数实现 ioc 的人来说是否正常。
我可以做一些简化——比如我真的不需要为几个适配器传递工厂,因为我可以直接传递适配器,因为它没有内部状态。但我真的是在问参数的数量。
或者更确切地说,我正在寻求保证我不会过火 ;)
但我开始觉得应该对 UserProvider 类进行一些分解 - 但后来我得到了更多的管道,这就是引发这种担忧的原因。
我想一个子问题是,如果我有这些顾虑,我是否应该考虑使用服务定位器模式?
最佳答案
当使用 DI 和构造函数注入(inject)时,对 SRP 的违反变得非常明显。这实际上是一件好事,不是 DI/IOC 的错。如果您不使用构造函数注入(inject),该类将具有相同的依赖关系,只是不那么可见。
您在具体示例中可以做的是将一些相关的依赖项隐藏在外观后面。例如,IVehicleRepository 和 IUserVehicleRepository 可以隐藏在 IVehicle facade 后面。将 IUserRepository、IRoleProvider 和 IAuthenticationProvider 放在外观后面也可能有意义。
关于c# - Ioc 中繁忙的构造函数——它们是代码的味道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853920/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
我们正在使用 PHP 和 Mysql 开发一个基于 Web 的应用程序。如您所知,使用 Web 界面备份大型数据库存在限制,因此我需要一个解决方案来通过以下条件备份我们的大型数据库: 该过程可以在没有
有什么方法可以检测主线程何时被锁定/忙碌(也就是不会响应触摸事件)? 可能的方向检查 dispatch_get_main_queue 的大小(但我不知道如何操作这个对象来查看它的大小) [[UIApp
我已在 Windows 7 64 位上安装了 WAMP。当我尝试启动它时,它说端口 80 被“服务器:Microsoft HTTPAPI/2.0”使用。 我检查了一下,没有安装IIS。我该怎么办? 最
我们有一个 mongoosejs 客户端,它查询大型 mongodb 集合(大约 1000 万条记录)并通过管道传输到转换流。当我们运行此代码时, Node 进程占用 100% CPU 并且变得繁忙,
我是一名优秀的程序员,十分优秀!