Мне было предложено написать графический интерфейс для существующей программы оболочки /cmdline, написанной на Java, и я хочу создать слой абстракции между графическим интерфейсом и исходной программой, что упростит добавление другого графического интерфейса ( например, веб-интерфейс, а не настольное приложение). На данный момент структура программы выглядит следующим образом:
Параметры командной строки немедленно переводятся в хэш-таблицу Java (с помощью опции -f opt
в хэш "-f=>opt"
). Эти параметры затем используются для настройки объекта environment
, который использует программа.
Структура, которую я имею в виду, это:
Следуя сплошным строкам, это означает, что GUI создает файл XML, содержащий ту же информацию, что и параметры оболочки /cmdline, которая затем используется для настройки опции environment
.
Дело в том, что я не совсем уверен, что лучший способ для работы (откуда пунктирные линии, обозначающие альтернативные структуры), и я также не знаю, является ли здесь правильный выбор XML.
В соответствии с этим части программы, которые устанавливают объект environment
из options
, расположены в тех же методах, что и части, которые используют environment
для получения результатов. Поэтому было бы проще реализовать что-то, что передавало аргументы shell/cmdline непосредственно в программу, чем было бы для реализации структуры, в которой информация передавалась как XML файл. Я, конечно же, не хочу создавать XML файл, а затем переводить его в параметры оболочки и передавать их в программу, но для GUI может возникнуть больше смысла генерировать собственные параметры оболочки, а не создавать XML.
Основное преимущество использования XML файла, насколько я могу судить, заключается в том, что он упрощает работу будущих разработчиков, поскольку они могут использовать существующие библиотеки для создания XML файлов, а не беспокоиться о получении синтаксиса -a opt1 -b opt2 -c opt3 [...]
правильно.
С другой стороны, я слышал, что попытка создать собственный XML-язык не воспринимается легкомысленно (хотя программа поскольку он хранит данные в файлах XML без DTD или даже схемы, насколько я могу судить).
Является ли мой подход более или менее правильным? Или я использую совершенно неприемлемые инструменты для работы, которую я пытаюсь сделать?