@the5x

Отличие создание объекта через new и dependency injection?

В чем отличие создание объекта через ключевое слово new и dependency injection?
  • Вопрос задан
  • 290 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Flying
При создании экземпляра объёкта через new вы просто создаёте экземпляр объекта т.к. это конструкция самого языка. Если этот объект нужно создавать как-то специфически, к примеру если надо передавать что-то в конструктор или как-то дополнительно конфигурировать и т.п. - всё это ваша ответственность. Если вам понадобится этот же объект где-то в другом месте проекта - то передача его туда - тоже ваша ответственность.

Dependency injection container, в отличие от этого обеспечивает следующие задачи:
  1. Централизованное хранилище объектов и интерфейс для их получения
  2. Автоматическое корректное создание сконфигурированных экземпляров объектов

Конкретные реализации могут предоставлять дополнительные сервисы, но описанные выше - основные. Конечно, внутри там в конечном итоге тот же new, просто логика создания, конфигурирования и хранения объектов вынесена в отдельную стандартизированную сущность которой можно и нужно пользоваться для упрощения и улучшения качества своего кода.
Ответ написан
Через new создаётся экземпляр конкретного класа, через DI можно передавать клас реализующий необходимый функционал (то есть зависить от интерфейса, а не конкретной реализации)

Через DI можно передавать уже сконфигурированный объект, через new его придется конфигурировать после каждого создания.
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
это разные вещи и их нельзя сравнивать. DI - это абстрактный шаблон проектирования, а не конструкция языка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы