0

メソッドインジェクションを使用する傾向があるいくつかのフレームワークを見てきました。たとえば、次のようになります。

public abstract class MyClass {
    /** Create the class here */
    protected abstract Prototype createPrototype();

    public void doSomething() {
        createPrototype().foo();
    }
    public void doSomethingElse() {
        createPrototype().bar();
    }
}

また、匿名の内部クラスを使用して、カスタム機能を追加したり、好みのオブジェクトを作成したりできます。

   new MyClass() {
      createPrototype() {
        return prototype;
      }
   }

そして、コンストラクターインジェクションを好む他のもの、たとえばguice。

コンストラクター注入よりも利点がありますか? メソッド注入を使用することは良い方法ですか?

4

1 に答える 1

1

コンストラクターベースの依存性注入が不可能なまれな状況がいくつかありますが、メソッドベースの DI ではなく、コンストラクターを使用する方が一般的に良いと考えられています。欠落している場合は、オブジェクトの構築時に一度にそれをキャッチできます。また、通常、依存関係が設定された後に依存関係を台無しにしたくないため、それらのセッターの負荷を投入すると、カプセル化が多少壊れます。セッターを使用したくない場合、セッターを使用する意味は何ですか?

于 2013-09-25T14:36:36.953 に答える