Можешь объяснить концепцию dependency injection в Swift, описать разные подходы к её реализации и обсудить, как она улучшает качество кода и тестируемость? — ДейлиПреп