Я пишу клиент 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.Найти соответствующего исполнителя на основе элемента «имя» 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