glagola писал(а): ↑2017.04.19, 14:32
zelenin писал(а): ↑2017.04.19, 14:19
Если хочется синглтона, пропиши сервис. Не хочется - не прописывай и получай разные инстансы, что ожидаемо.
Так, вот я и задавал этот вопрос выше: как часто вы сталкивались c ситуацией, что injected dependency должна создаваться с 0 каждый раз (учитывая, что среда в которой обрабатывается запрос умирает после обработки запроса)?
никогда не сталкивался, т.к. у меня все зависимости всегда прописаны в конфигурации DI-контейнера, но если бы я не прописал и зависимость резолвилась "из воздуха", то я бы ожидал, что каждый раз будет новый инстанс.
ElisDn, а вообще сторонние DIC позволяют резолвить зависимости, которые в них явно не прописаны? это как-то противоречит самому названию dependency injection container.
glagola писал(а): ↑2017.04.19, 14:32
Мне кажется, что идея пересоздания зависимостей (без явного определения их как singleton) может быть актуальна для сред, которые НЕ умирают после обработки запроса.
не вижу связи. Когда мне не нужны разные инстансы, я делаю один и им пользуюсь (сервисы без хранения состояния либо с хранением глобального состояния в рамках реквеста). Когда нужны инстансы с локальным состоянием, я делаю разные инстансы (в рамках локального контекста).
glagola писал(а): ↑2017.04.19, 14:32Мне кажется, что именно поэтому предложенный подход вам кажется неочевидной магией.
потому что контейнер должен содержать (contain) зависимости (dependency) и резолвить их, а не создавать из воздуха.