Что сделает обратную совместимость невозможной?

У нас есть компонент платформы (написанный на Java), который теперь должен быть обратно совместим в течение определенного периода, например 3 года. Существует ли вероятность того, что для реализации новой функции или исправления ошибки потребуется изменение интерфейса в платформе?

Один конкретный пример: допустим, в платформе определен некий интерфейс слушателя, и клиентский код будет реализовать слушателя. Позже кажется, что в слушателе потребуется новый метод, чтобы представить новую функцию, но мы не можем этого сделать, потому что он нарушит интерфейс, и некоторые клиенты не смогут скомпилировать.

Хорошая идея - создать новый интерфейс что расширяет исходный с помощью нового метода? Клиент, которому нужна эта новая функция, теперь будет реализовывать новый интерфейс, и другой клиентский код изменять не нужно. Конечно, вызовы в платформе теперь должны проверять тип слушателя, если это новый интерфейс с новым методом, тогда будет вызван новый метод или ничего не будет сделано.

Такое изменение может привести к код выглядит не так просто, но я думаю, он все равно будет работать. Есть ли случаи, когда изменение интерфейса платформы является обязательным?

6
задан tshepang 22 April 2014 в 21:22
поделиться