Dagger 2 の Dagger 1 に対する利点は何ですか?
これまでのところ私は(ちょうど)2を見つけました:
同時に、大きな欠点が1つ見つかりました。Dagger2ではモジュールオーバーライド(@Module(overrides = true)
)を使用できないため、少なくとも私にとっては非常に煩わしいものです。これは、単体テストに非常に役立ちました。
他に長所/短所はありますか?
https://blog.gouline.net/2015/05/04/dagger-2-even-sharper-less-square/ と http://から得られるいくつかの利点と欠点google.github.io/dagger/dagger-1-migration.html :
ダガー2の利点:
@Singleton
_という1つのスコープのみをサポートしていました。そして不利な点:
inject()
メソッドには、インジェクションターゲットとの強い型の関連付けがあります。これはデバッグには適していますが、基本クラス(基本アクティビティ、フラグメントなど)から注入する一般的な方法が複雑になります。overrides
をサポートしていません。単純なテスト偽物をオーバーライドするモジュールは、その動作をエミュレートするモジュールのサブクラスを作成できます。オーバーライドを使用し、依存性注入に依存するモジュールは、オーバーライドされたモジュールが2つのモジュール間の選択肢として表されるように分解する必要があります。EDIT 2016/11/16:これは技術的な利点ではありませんが、Dagger 1は非推奨になり(2016年9月15日現在)、廃止されます。積極的に開発される。彼らはDagger2への移行を推奨しています。
toothpick をご覧になることはお勧めしません。
共著者として、私は明らかに偏見がありますが、ええ、これははるかに使いやすく、少なくともほとんどの場合、短剣よりも高速です。そして実際、スコープツリーは、複数のアクティビティにまたがるスコープでインスタンスをリサイクルするなど、より高度な機能を開発するための非常に強力な方法です。