gpt4 book ai didi

dependency-injection - 通过构造函数或属性 setter 进行依赖注入(inject)?

转载 作者:行者123 更新时间:2023-12-03 04:23:35 25 4
gpt4 key购买 nike

我正在重构一个类并向其添加新的依赖项。该类当前正在构造函数中获取其现有依赖项。因此为了保持一致性,我将参数添加到构造函数中。
当然,还有一些子类以及更多的单元测试,所以现在我正在玩改变所有构造函数以匹配的游戏,这需要很长时间。
这让我认为使用带有 setter 的属性是获取依赖关系的更好方法。我认为注入(inject)的依赖项不应该成为构造类实例的接口(interface)的一部分。您添加了一个依赖项,现在您的所有用户(子类和直接实例化您的任何人)突然都知道了它。这感觉像是封装的破坏。

这似乎不是现有代码的模式,所以我想找出普遍的共识是什么,构造函数与属性的优缺点。使用属性 setter 更好吗?

最佳答案

嗯,这取决于:-)。

如果类在没有依赖项的情况下无法完成其工作,则将其添加到构造函数中。该类需要新的依赖项,因此您希望您的更改能够破坏一些东西。此外,创建未完全初始化的类(“两步构造”)是一种反模式(恕我直言)。

如果类可以在没有依赖关系的情况下工作,那么 setter 就可以了。

关于dependency-injection - 通过构造函数或属性 setter 进行依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1503584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com