oop — полиморфизм против внедрения зависимостей в PHP?

В чем разница между полиморфизмом и внедрением зависимостей в PHP?
Мне они кажутся одинаковыми.

-1

Решение

Полиморфизм является предоставление единого интерфейса для объектов разных типов. Это означает, что вы определяете один родительский класс, то есть Person, и извлекаете из него несколько других классов. И.Е. Почтальон, программист, стоматолог. Эти дочерние классы имеют что-то общее с человеком, но они также реализуют специализированные функции.

Внедрение зависимости это шаблон проектирования программного обеспечения, который реализует инверсию управления и позволяет дизайну программы следовать принципу инверсии зависимостей. Термин был придуман Мартином Фаулером. Инъекция — это передача зависимости (службы) зависимому объекту (клиенту). База данных является хорошим примером этого. Допустим, нашему классу, указанному выше, необходимо сохранить некоторые данные о себе. Внедрение зависимостей включает передачу объекта базы данных в класс Person для работы с ним. Класс Person не беспокоится о том, как база данных сохраняет свою информацию, он касается только открытых API базы данных. Вы можете эффективно поменять базы данных, и если их значения одинаковы, класс Person не заботится. Это становится очень удобным, когда вы хотите провести модульное тестирование ваших классов и хотите удалить зависимость от базы данных. Вы можете использовать внедрение зависимостей для передачи фиктивной базы данных, которая всегда возвращает фиктивную информацию.

Вот два предыдущих вопроса о стеке потока, связанные с каждым:

Что такое полиморфизм, для чего он нужен и как он используется?

Что такое внедрение зависимостей?

Кроме того, проверьте сайт Мартина Фаулера для получения дополнительной информации об этом.
http://www.martinfowler.com/articles/injection.html

3

Другие решения

Я думаю, что внедрение зависимости намного проще. Это как внедрить класс (объект) и вызвать родительский метод. Похоже на обертку. Полиморфизм использует абстрактные классы и позволяет вам определять несуществующие функции.

1

Как я понимаю это сейчас:

полиморфизм + введенный объект = внедрение зависимости

Полиморфизм — это когда вы создаете объекты, которые реализуют один и тот же интерфейс, поэтому все объекты имеют одинаковые базовые методы.

Внедрение зависимости — вы вводите объект, который можно поменять местами с другим объектом. Но все эти объекты реализуют один и тот же интерфейс (как в полиморфизме).

0
По вопросам рекламы [email protected]