2015-04-23 53 views
1

我目前正在將匕首引入android應用程序。我有點擔心設計方面,我想知道是否有更好的方法來處理它。讓我們用提供的示例here來說明這個問題。考慮以下模塊;如何在匕首中處理與多個其他依賴關係的依賴關係?

@Module 
class DripCoffeeModule { 
    @Provides Heater provideHeater() { 
    return new ElectricHeater(); 
    } 

    @Provides Pump providePump(Thermosiphon pump) { 
    return pump; 
    } 
} 

這裏,很容易地看到,泵的創建依賴於Thermosiphon正因爲如此,它是提供爲providePump方法的ARG。同樣,如果我們想在DripCoffeeModule模塊,能夠提供C類型,其依賴關係,其中一個HeaterPump,我們就會有下面的方法的對象:

@Provides 
C provideC(Heater heater, Pump pump){ 
    C wantedC = applyMagic(heater, pump) 
    return c 
} 

如果provideC方法得到16(或任何大量的)依賴關係,它是否會有16個或更多的參數?有沒有更好的辦法來處理這種情況?

回答

0

在這種情況下,我認爲你的設計C是有缺陷的。從IntelliJ IDEA Code Inspections List

過度耦合類
該檢查報告的是高度 耦合引用太多其他類的類,即任何實例。類型太高的聯軸器可能非常脆弱,應該可能被分解。

因此,你不希望有16只依賴你C類,但你要〜2-3-4依賴它,而這又依賴於少數類。


如果你真的想要一個很大的依賴性,你可以用@Inject註釋構造函數。然後@Provides C provideC(...)方法是沒有必要的:

public class C { 

    @Inject 
    public C(Object arg1, Object arg2, Object arg3, ...) { /* ... */ } 

    /* ... */ 
} 
+0

16是我剛選擇的任意數字。我有一個有5個依賴關係的類,但是5個參數似乎有點多。 – Adeeb