我在Guice中有一個類在構造函數中使用依賴注入獲取〜10個參數。依賴注入與許多小類
該類有許多派生類。 所有派生類的構造函數只是將所有參數傳遞給super。
將新參數添加到基類的構造函數中需要將此參數添加到所有派生類的所有構造函數中。
class MyBaseClass {
@Inject
MyBaseClass(arg1,arg2,arg3, ..., argn) {
this.arg1 = arg1
....
}
}
class MyDerivedClass1 extends MyBaseClass{
@Inject
MyDerivedClass1(arg1,arg2,arg3, ..., argn) {
super(arg1,arg2,arg3, ..., argn)
}
}
class MyDerivedClass2 extends MyBaseClass{
@Inject
MyDerivedClass2(arg1,arg2,arg3, ..., argn) {
super(arg1,arg2,arg3, ..., argn)
}
}
一種解決方案我不得不是包裝的所有參數在一個類和注入該類基類和所有派生類。通過這種方式向該注入類添加新參數時,它將注入到所有派生類中。
喜歡的東西:
class MyBaseClassSettings {
@Inject
MyBaseClassSettings(arg1,arg2,arg3, ..., argn) {
this.arg1 = arg1
...
}
}
class MyBaseClass {
@Inject
MyBaseClass(MyBaseClassSettings settings) {
this.settings = settings;
}
}
class MyDerivedClass1 extends MyBaseClass{
@Inject
MyDerivedClass1(MyBaseClassSettings settings) {
super(settings)
}
}
class MyDerivedClass2 extends MyBaseClass{
@Inject
MyDerivedClass2(MyBaseClassSettings settings) {
super(settings)
}
}
假設ARG遊戲沒有真正的相互關係(一個是數據庫的連接,另一種是多數民衆贊成分配線程任務的幫手,另一人做的部分實際的邏輯,另一個持有該類的地理配置......(只是例子))這個解決方案是否被認爲是好的?
如果是這樣,包裝類的命名會是什麼?
儘管這種方法沒問題,但您應該檢查所有參數參數是否沒有共同之處......也許您會發現,您可以從「設置」中獲取「數據庫設置」,「用戶設置」 ,...並使用多個有意義的包裝器。 –