Я бы начал с разделения кода на три отдельных модуля (например, по одному модулю на проект):
- Пользовательский интерфейс JavaFX
- Пользовательский интерфейс Java
- Приложениебиблиотеки
Два пользовательских интерфейса уже должны быть отдельными потоками разработки.
Библиотеки приложений будут разрабатываться независимо от одной и той же базы кода.Я хотел бы начать с любой версии, которая является более продвинутой, а затем просмотреть журналы управления версиями и различия для другой версии и объединить изменения.Могут быть некоторые инструменты, которые могут помочь вам в этом, но объединение - это в основном ручной процесс.
Если у вас есть два несовместимых требования, вам нужно будет «инкапсулировать концепцию, которая варьируется», вводя адаптер или полиморфныйреализации того же интерфейса.Существуют различные методы, которые помогут вам отделить компоненты;например, принцип обращения зависимостей, шаблон посредника.
Если у вас есть модульные тесты для библиотек приложений, процесс слияния будет намного проще.
Хотя это звучит как большая работа,поддержание расходящихся кодовых баз - это кошмар.Как только шаблон установлен, становится все сложнее и сложнее что-либо делать, и прецедент для следующей копии уже готов.Каждый раз, когда я видел этот шаблон на практике, продукт выходил из строя медленно и дорого.