2012-10-30 79 views
1
public class Apple { 
    private final Orange orange; 
    private final Pear pear; 
    private final Banana banana; 

    public Apple(Orange orange, Pear pear, Banana banana) { 
     this.orange = orange; 
     this.pear = pear; 
     this.banana = banana; 
    } 

    // methods 
} 

這是我的POJO課程。現在,我在我的onClick方法中執行實例化部分。任何人都可以幫助我在依賴注入?

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Apple apple = new Apple(myOrange, aPear, theBanana); 
     new AppleAsyncTask(apple).execute(); 
    }) 
}; 

我該如何避免這個實例化部分,並使用依賴注入做更好的事情?或者我正在做的是對的?

+0

問題是:你如何計算你的蘋果(水果沙拉可能是一個更好的名字......)應該保持什麼橙/梨/香蕉? 對我來說,你在做什麼看起來完全有效,但我可以想象的情況下,依賴注入可能是一個更好的選擇。 – DThought

+0

@DThought:你能舉一個例子嗎? – theJava

回答

1

如果您問的是向AppleAsynTask注入Apple,那麼您所做的是正確的。依賴注入是一種Inversion of Control。除此之外,還有其他方法可以實例化Apple。例如,你可以使用一個factoryservice locator

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     new AppleAsyncTask(AppleFactory.getApple(myOrange, aPear, theBanana)).execute(); 
    }) 
}; 

你在做什麼對我來說很好。

+0

你可以給我這個使用任一因素或服務定位器的例子...我在android。 – theJava

+0

@theJava我剛剛在Google上做了一個快速搜索。此鏈接可能有助於描述如何實現工廠http://javapapers.com/design-patterns/factory-method-pattern/ – RNJ

相關問題