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();
    })
};

このインスタンス化の部分を回避し、依存性注入を使用してより良いことを行うにはどうすればよいですか?それとも私がしていることは正しいですか?

4

1 に答える 1

1

AppleをAppleAsynTaskに注入することについて質問している場合、あなたが行ったことは正しいです。依存性注入は、制御の反転の一種です。このプログラムの外でAppleをインスタンス化する方法は他にもあります。たとえば、ファクトリまたはサービスロケータを使用できます

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

あなたがしていることは私には良さそうです。

于 2012-10-30T08:47:09.287 に答える