Демо проект с кодом доклада о разных способах реализации DI.
Содержит 4 таргета:
DITypes
— типы инъекции зависимостейServiceLocator
— реализация инъекции зависимостей через сервис-локаторDynamicDI
— реализация упрощенного динамического DI контейнераStaticDI
— реализация упрощенного статического DI контейнера
Для того чтобы не усложнять и уместиться в тайминг доклада, были сделаны следующие упрощения:
- Инъекция только через конструктор
- Всего 2 скоупа:
.prototype
— зависимость создается каждый раз.lazySingleton
— зависимость создается всего 1 раз за жизнь контейнера
- Потокобезопасность не учтена
Но эти упрощения как раз позволили оставить на виду суть каждого из способов.