intermediate

Interface Segregation Principle

Разделяйте broad contracts на role-specific capabilities, чтобы clients зависели только от operations, которые им реально нужны.

ISP: клиенты не зависят от методов, которые не используют — делите жирные interfaces на role-specific. `Machine` с print и scan → `Printer` и `Scanner`, чтобы простой клиент не реализовывал no-op stubs.

Меньшие interfaces упрощают mocks, adapters и эволюцию, когда меняется одна роль.

На интервью: bloated repository interface на read/write ports.

Типовые ошибки: interface на каждый method; разрыв связного atomic use-case; persistence в именах segregated API.

Компромисс — больше типов interfaces против более лёгких dependents и тестов.

Чеклист:

  • Методы по роли клиента.
  • Без принудительных пустых реализаций.
  • Связные atomic use-cases целостны.