ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я знаю, что есть спор между DI и шаблонами поиска сервисов. У меня есть вопрос, который призван избежать дебатов. Этот вопрос для фанатов сервис-локаторов, которые, как Фаулер, думают: «ДИ ... трудно понять ... в целом, я предпочитаю избегать этого, если мне это не нужно». В целях моего вопроса я должен избегать DI (причины намеренно не указаны), поэтому я не пытаюсь спровоцировать дискуссию, не связанную с моим вопросом.
ВОПРОС: Единственная проблема, с которой я мог бы столкнуться при хранении своего контейнера IOC в одиночном (помните мой отказ от ответственности выше), связана с использованием дочерних контейнеров. Предположительно, дочерние контейнеры сами по себе не будут одиночками. Сначала я подумал, что это настоящая проблема. Но, подумав об этом, я начал думать, что именно такое поведение я хочу (дочерние контейнеры не являются одиночными, и могут быть утилизированы () по желанию).
Тогда мои мысли пошли дальше в философское царство. Поскольку я фанат поиска сервисов, мне интересно, насколько необходимо понятие дочернего контейнера. В небольшом наборе случаев, когда я видел полезность, это либо удовлетворяло DI (которого я в большинстве случаев избегаю), либо проблема была решаема без обращения к контейнеру IOC. Мои мысли были частично вдохновлены интерфейсом IServiceLocator , который даже не удосужился перечислить метод "GetChildContainer".
Итак, мой вопрос заключается в следующем: если вы фанат сервис-локаторов, обнаружили ли вы, что дочерние контейнеры обычно являются спорными? Иначе, когда они были необходимы?
дополнительный кредит: если есть другие философские проблемы с сервисным локатором в синглтоне (кроме тех, которые задают адвокаты DI), что это такое?