Долго боялся лезть разбираться в том, что же такое внедрение зависимостей. Но оказалось все очень просто - все библиотеки делают одно и то же: Выносят создание класса в отдельный файл Если раньше вы писали: SomeManager variable = new SomeManager(); прямо там, где вам нужен был этот менеджер, то теперь будете писать: @Inject SomeManager variable; а для создания класса SomeManager напишите одну функцию, которая будет вызываться автоматически: SomeManager provide() { return new SomeManager(); } Зачем? 1. Чтобы заменив в одном месте параметры создания класса, сразу заменить их везде 2. Чтобы каждый раз не писать new SomeManager(), достаточно аннотации 3. Чтобы легко заменить класс SomeManager на SomeManager2, внеся изменения только в одном месте 4. Чтобы легче было отслеживать жизненный цикл этого объекта (большинство библиотек умеют создавать\уничтожать объект самостоятельно, привязываясь к жизненному циклу класса, в который был инъецирован объект) 5. Чтобы управлять количеством соз
Dependency Injection на пальцах (DI, Dagger, Hilt, Koin)
9 июля 20229 июл 2022
22
1 мин