Итак, я новичок здесь, и отправлю это с оговоркой, которую я растягиваю, предлагая свой ответ.
Мне кажется, что до сих пор можно использовать только такие понятия, как "принцип единой ответственности".Для меня единственная ответственность вашего класса преобразования заключается в том, чтобы управлять переводом данных из одной спецификации формата в другую.Некоторые мысли:
В самых строгих терминах, если один из форматов изменится, теоретически вам все равно понадобится предыдущая версия конвертера форматов для преобразования устаревших данных (обратная совместимость).Вы никогда не знаете, когда кто-то может не получить памятку об изменении форматов.Или вы можете наткнуться на партию данных в формате A v1 в подвале.Следовательно, единственной обязанностью вашего класса будет преобразование данных из формата A1.0 в формат b1.0.
Если одна из спецификаций изменится, теперь вам нужно создать новую ВЕРСИЮ вашего класса, верно?Допустим, кто-то изменяет спецификацию для формата A. Теперь вам нужен класс, который управляет преобразованием данных из формата A1.1 в B1.0.Вы создали новый класс с единственной ответственностью.
Хотя в рамках вашего проекта вы можете не считать необходимость обратной совместимости требованием, с точки зрения концепции SRP, я понимаю, что изменение одного или обоихСпецификации формата требуют определения нового класса и, в самых строгих терминах теоретической теории, не предполагают более чем одной ответственности.
Наконец, если вы думаете о том, что отображение данных из одного формата в другой является единственной обязанностью класса, то изменение спецификации EITHER все еще требует изменения только одного задания класса.
Последний пример на иллюстрации.Предположим, что ответственность моего класса состоит в том, чтобы преобразовать определенный оттенок красного в особый оттенок розового.Затем однажды дизайнер шеф-поваров решает, что ему нужен более яркий розовый цвет, одна сторона моей спецификации изменилась, но ответственность моего класса не изменилась.На следующий день на самом высоком корпоративном уровне было решено, что новый красный стандарт больше похож на бордовый.Теперь моя спецификация ввода изменилась, но ответственность моего класса - нет.Я мог бы решить создать новый класс и сохранить версию 1.0 для удержаний, или я мог бы просто обновить существующую версию.В любом случае, класс по-прежнему несет единственную ответственность;отображение красной спецификации на розовую спецификацию.