@the5x

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 22:11
2000 руб./за проект
24 апр. 2024, в 22:00
500 руб./в час
24 апр. 2024, в 21:49
10000 руб./за проект