Получить доступ

Что утверждает Interface Segregation Principle?

MiddleПринципы проектирования
Коротко

Клиенты не должны зависеть от методов, которыми не пользуются: лучше несколько узких интерфейсов под роли, чем один толстый. Толстый интерфейс создаёт ложную связанность, а реализации вынуждены писать заглушки.

  • Пример: Reader и Writer вместо одного FileAccess
  • java.sql.Connection — десятки методов
  • Признак нарушения — методы с UnsupportedOperationException

А ещё В Spring Data — Repository, CrudRepository, PagingAndSortingRepository на выбор

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

ISP смотрит со стороны клиента: зависимость от толстого интерфейса создаёт ложную связанность — клиента задевают изменения методов, которые он не вызывает, а реализации вынуждены писать заглушки. Пример из платформы — java.sql.Connection с несколькими десятками методов. Чинится разделением по ролям: OrderReader и OrderWriter вместо всеобъемлющего OrderService.

Что хотят услышать

  • Формулировка со стороны клиента.
  • Последствия толстого интерфейса.

Частые ошибки

  • Считать, что default-методы Java 8 решают проблему ISP: они убирают боль реализации, но клиент по-прежнему зависит от раздутого контракта.
  • Разделять интерфейсы по реализации, а не по потребностям клиентов.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Клиенты не должны зависеть от методов, которыми не пользуются
  • ✗Каждый класс должен реализовывать хотя бы один интерфейс
  • ✗Интерфейсы нельзя расширять другими интерфейсами
  • ✗У интерфейса должно быть не больше одной реализации

Что спросят дальше

  • Как ISP связан с LSP и UnsupportedOperationException?
  • Может ли одна реализация имплементировать оба узких интерфейса?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем