Я читал об основах внедрения зависимостей. Я действительно влюбился в идею разделения проблем и позволения объектам выполнять свою основную работу - это, несомненно, превосходный и давний принцип проектирования!
Однако чем больше я читаю в DI-фреймворках, тем больше я волнуюсь:
1) в том, как они «автоматически» разрешают зависимости
2) Об экстремальных сложностях, вносимых в файлы конфигурации
По пункту 2 я видел, как мои клиенты тратили миллионы долларов на обучение людей продуктам, значительная часть которых заключалась в том, как «не» прикасаться к файлам конфигурации. Администраторы теперь боятся этих файлов конфигурации.
Тем не менее, я вижу другой шаблон, называемый локаторами сервисов, где я мог бы красиво собрать все «глобальные» сервисы, которые мне нужны в начале моего приложения (может быть хост приложения или контекст приложения или что-то еще). Сделайте этот сервисный локатор глобально доступным и вуаля!
Однако я вижу, что при использовании подхода Service Locator будет меньше гибкости, когда мне потребуется более одного типа «глобального» сервиса, основанного на каком-то критерии (известно кому?)!
Итак, здесь я более запутан, чем раньше, в каком направлении идти. Хотя мне очень нравится принцип дизайна, сложность существующих фреймворков меня отбрасывает!
Являются ли мои опасения подлинными? Кто-нибудь еще чувствует то же самое? Если да, то есть ли хорошая альтернатива для таких огромных "каркасов"?