【发布时间】:2010-12-02 23:31:26
【问题描述】:
我正在重构一个类并向它添加一个新的依赖项。该类当前正在构造函数中获取其现有依赖项。所以为了一致性,我将参数添加到构造函数中。
当然,还有一些子类以及更多用于单元测试的子类,所以现在我正在玩改变所有构造函数以匹配的游戏,这需要很长时间。
这让我认为使用带有 setter 的属性是获取依赖项的更好方法。我不认为注入的依赖项应该是构造类实例的接口的一部分。您添加了一个依赖项,现在您的所有用户(子类和直接实例化您的任何人)突然都知道它了。这感觉就像是打破了封装。
这似乎不是这里现有代码的模式,所以我想找出普遍的共识是什么,构造函数与属性的优缺点。使用属性设置器更好吗?
【问题讨论】:
标签: dependency-injection inversion-of-control