委托的Sould setter是否在界面中?

时间:2009-05-21 19:09:04

标签: testing setter

我们有很多这样的设计对象:接口和几个实现,以及组合使用多个对象。 例如: Foo实现了IFoo并且有一个实现IBar的Bar对象 Foo还有一个用于注射依赖的setBar(IBar bar)方法。

我的问题是:setter不在界面中? (对于测试,模拟......我被卡住了!)

3 个答案:

答案 0 :(得分:1)

在界面中设置一个用于模拟和测试的setter并不好。因此,您允许该接口的用户使用任意设置组件,即使该对象的属性在构造后可能不应该是可修改的。界面不应该揭示如何构造对象。

答案 1 :(得分:0)

如果你正在使用多态,即在接口类型上调用setter,那么显然你需要在接口中使用它。

答案 2 :(得分:0)

使用setter Injection将Bar注入Foo。在没有Bar的情况下Foo不存在的上下文中,使用构造函数注入Bar会更合适。

进一步阅读:Types of dependency injection