Демонстрационный проект, в котором есть одновременно 2 реализации DI, с помощью Dagger 2 и Toothpick.
Переключиться между ними можно, выбрав одну из реализаций в классе AppDi
:
public static final Di INSTANCE = new DaggerDi();
public static final Di INSTANCE = new ToothpickDi();
В реализации DI намеренно не используются @Scope
-аннотации на классах-зависимостях, потому что я считаю, что объект сам по себе не должен знать, к какому скоупу он принадлежит. Также организовать скоупы можно вообще без аннотаций, как, например, сделано в Toothpick. Разумеется, это дело вкуса.