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