Я пишу Java-клиент, который связывается с удаленным сервером через HTTP / XML.
Сервер отправляет команды моему клиенту в формате XML, например:
<command>
<name>C1</name>
<param>
.....
</param>
</command>
Существует около 10 или более различных команд (C1, C2, ...), каждая из которых имеет свой набор параметров.
Мой клиент обработает команду, затем сервер ответа с результатом выполнения выглядит следующим образом:
<C1>
<code>200</code>
<desc>xxx</desc>
</C1>
Я только знаком с C, но очень плохо знаком с Java и ООП,
Итак, мой вопрос прост: как изящно спроектировать следующую логику ООП?
1. Преобразуйте строку XML в объект XML
2. Определить исполнителя, отвечающего за кодирование, на основе элемента name в XML и проанализировать параметры.
3. Выполните команду вместе с параметрами
4. преобразовать результат в объект XML
5. Преобразуйте объект XML в строку XML
Это хороший дизайн?
1. Определите абстрактный базовый класс и множество подклассов для каждой команды, включая следующий метод:
void parseCommand(MyXMLObject obj);
void execute();
MyXMLObject generateResult();
или просто простой метод:
MyXMLObject execute(MyXMLObject obj);
и эти поля:
String mCommandName;
int mRetCode;
String mRetDesc;
2. Затем определите фабричный класс для возврата экземпляра одного из подклассов на основе объекта XML.
3. Код логической части:
MyXMLObject obj = MyXMLUtil.getXMLObject(XMLString);
MyCommand command = MyCommandFactory.getCommand(obj);
MyXMLObject retObj = command.execute();
String retStr = MyXMLUtil.getString(retObj);
...//network operation