У нас есть компонент платформы (написанный на Java), который теперь должен быть обратно совместим в течение определенного периода, например 3 года. Существует ли вероятность того, что для реализации новой функции или исправления ошибки потребуется изменение интерфейса в платформе?
Один конкретный пример: допустим, в платформе определен некий интерфейс слушателя, и клиентский код будет реализовать слушателя. Позже кажется, что в слушателе потребуется новый метод, чтобы представить новую функцию, но мы не можем этого сделать, потому что он нарушит интерфейс, и некоторые клиенты не смогут скомпилировать.
Хорошая идея - создать новый интерфейс что расширяет исходный с помощью нового метода? Клиент, которому нужна эта новая функция, теперь будет реализовывать новый интерфейс, и другой клиентский код изменять не нужно. Конечно, вызовы в платформе теперь должны проверять тип слушателя, если это новый интерфейс с новым методом, тогда будет вызван новый метод или ничего не будет сделано.
Такое изменение может привести к код выглядит не так просто, но я думаю, он все равно будет работать. Есть ли случаи, когда изменение интерфейса платформы является обязательным?