比方說,我有以下類和匕首模塊從維護的角度來看,實現屬性注入vs構造函數注入更爲優化嗎?
public class Base implements IBase {
private IDependency dependency; //IDependency is an interface
Base(IDependency dependency) {
this.dependency = dependency
}
}
public class SubClass extends Base implements ISubclass {
Base(IDependency dependency) {
super(dependency)
}
}
@Module
public class MyModule {
// Let's assume some other class use SubClass and requires this
@Provides
ISubclass providesSubclass(IDependency dependency) {
return new SubClass(dependency);
}
}
如果我添加了新的參數Base
構造,我得去MyModule
和修改提供了方法,包括這個新的參數(除了obviusly換款Base
和Subclass
構造器)。在我看來,使用propery注入我沒有這個問題,因爲我沒有使用任何構造函數。
我的感覺是我可能做錯了什麼或者我有一些概念錯誤。我更喜歡構造函數注入屬性注入,但現在我不得不向40個其他類使用的基類添加一個構造函數參數,不僅需要修改這40個類構造函數,還必須修改模塊以反映新的構造函數參數。
我錯過了什麼嗎?我是否正確,如果我說做構造函數注入我會寫更少的代碼和維護將更容易?
[通過構造函數或屬性設置器的依賴注入?](http://stackoverflow.com/questions/1503584/dependency-injection-through-constructors-or-property-setters) – rghome