【发布时间】:2009-12-31 14:57:14
【问题描述】:
我有一个从 CSV 文件操作导入产品的类,它需要大约 7 个参数。这是进口商绝对需要的信息。
所有这些参数都有相同的生命周期。最后我们必须有一个Immutable Object。
我太害怕在构造函数中列出所有这些,因为它会影响可读性,并决定将其中的 3 个移到 setter 注入中。但显然这不是一个优雅的解决方案。
问题:
1) 混合使用基于构造函数和基于 setter 的注入是一种不好的做法吗?
2) 如何解决这个特定问题?
我在考虑应用 Martin Fowler 的“Introduce Parameter Object”重构,但这样做有问题。
4 参数可以很容易地移动到 Parameter 对象(customerId、projectId、languageId 等) - 所有整数。
其他 3 个参数是我注入的对象(模拟单元测试需要它)。
【问题讨论】:
-
这将取决于您的 DI 容器...有些比其他容器更容易。
-
@skaffmann:我强烈反对。 DI 模式的使用不应该由 DI 容器的选择来决定 - 容器可以帮助您,而不是限制您。
-
@Nikita - 为什么不引入完整的参数对象并将你的模拟注入参数?
标签: oop refactoring dependency-injection setter