При написании кода я вижу требования по изменению моделей данных (например, добавление / изменение / удаление членов данных из класса). Когда эти модели данных принадлежат интерфейсу, кажется, что их трудно изменить, не нарушая существующие клиентские коды. Поэтому мне интересно, есть ли лучшая практика проектирования интерфейсов / моделей данных таким образом, чтобы минимизировать влияние в процессе эволюции.
Самая близкая вещь, которую я могу найти от Google, - версия контракта данных. Но это похоже на конкретную тему .net. Мне интересно, применяется ли та же практика в мире Java, или существует другой или общий способ решения проблемы эволюции модели данных.
Спасибо