Интерфейс Browser задаёт общий контракт, чтобы клиентский код работал с Chrome и Firefox без зависимости от конкретной реализации и мог подменять браузер в тестах.
Зачем нужен интерфейс Browser, если классы Chrome и Firefox реализуют этот интерфейс?
Интерфейс Browser задаёт общий контракт, чтобы клиентский код работал с Chrome и Firefox без зависимости от конкретной реализации и мог подменять браузер в тестах.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Интерфейс Browser задаёт общий контракт, чтобы клиентский код работал с Chrome и Firefox без зависимости от конкретной реализации и мог подменять браузер в тестах.
Например, функция принимает Browser и вызывает open или close, не проверяя имя класса. Это полиморфизм и зависимость от абстракции. Разные реализации обязаны сохранять смысл контракта, иначе единый интерфейс будет формальным. Сам по себе интерфейс не нужен для каждого класса: если он полностью дублирует библиотеку и не создаёт полезной границы, это лишняя обвязка. Названия здесь условные и зависят от языка и framework проекта.