Я работаю над программным проектом, в котором нам нужно создать три API. Один для канала домашнего банкинга, один для канала агентства и третий для мобильного канала.
API агентства является наиболее полным, поскольку он имеет все функциональные возможности ... затем немного меньше Home API, а затем мобильный API.
Здесь архитекторы создали общий уровень (многоканальные EJB-сервисы, используемые всеми API). Но тогда API-интерфейсы разные.
Между API нет большой разницы. Большая команда начинала с канала агентства, и сейчас мы адаптируем ее для домашнего канала. Мы просто обогащаем объекты специально для нашего домашнего приложения. В противном случае код на 95% похож между API. API построен на основе Spring MVC и имеет (контроллеры, модели и некоторые утилиты).
В основном контроллеры выполняют сопоставление BO с ChannelObject (мне кажется, это не подходящее место), а также некоторые дополнительные утилиты и сериализаторы. На данный момент все дублировано. Они говорят, что причина дублирования в том, что они хотят, чтобы API были независимыми. «Если завтра мы хотим другого поведения для дома, чем агентство или мобильный, мы не будем бороться !!»
Есть ли случай, когда мы должны принять дублирующий код?