Статья удалена

Этот материал был удалён по просьбе автора.

Чтобы зависеть от абстракции, а не от конкретного класса. Удобно делать моки при юнит тестировании. На класс можно навешать несколько интерфейсов, но нельзя унаследоваться одновременно от нескольких классов (в некоторых языках можно).

12

Комментарий недоступен

3

Ещё очень удобно становится писать конфигурируемый код для разных ситуаций и окружений. Например, если есть загрузка файлов, то можно её реализовать через локальную файловую систему и через AWS, и в зависимости от окружения выбирать нужную реализацию (чтобы не нагружать AWS тестовыми файлами при локальной работе). То же самое можно провернуть с отправкой писем, SMS, пуш уведомлений... Да даже все потенциальные запросы в БД можно временно подменить на фейковую реализацию, которую можно быстро написать.

Плюс к этому через интерфейсы (и полиморфизм) реализуются многие шаблоны проектирования, которые позволяют переиспользовать код при необходимости. Шаблонные методы там, стратегии, абстрактные фабрики, декораторы и прочее: что-то более полезное, что-то менее.

3