我在寫一個通過HTTP/XML與遠程服務器通信的Java客戶端。Java設計問題:這是一個好設計嗎?
服務器發送命令給我的客戶以XML格式,像這樣:
<command>
<name>C1</name>
<param>
.....
</param>
</command>
有大約10或更多不同的命令(C1,C2,...),他們每個人都有不同的一組則params的。
我的客戶會處理命令,然後用執行結果響應服務器,看起來是這樣的:
<C1>
<code>200</code>
<desc>xxx</desc>
</C1>
我只熟悉C,但很新的Java和OOP,
所以,我的問題很簡單,如何以OOP方式優雅地設計以下邏輯?
1.Convert的XML字符串到一個XML對象
2.Find基於XML的 '名稱' 元件上correspoding執行者,並解析PARAMS
3.Execute與PARAMS
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.然後定義一個工廠類返回基於第子類之一的實例e XML對象。
3.邏輯部分代碼:
MyXMLObject obj = MyXMLUtil.getXMLObject(XMLString);
MyCommand command = MyCommandFactory.getCommand(obj);
MyXMLObject retObj = command.execute();
String retStr = MyXMLUtil.getString(retObj);
...//network operation
感謝您的建議。我一直在尋找一些'命令框架',但還沒有找到任何好的例子:( – bhh 2011-04-05 16:13:42
@bhh:幾乎每一個我去過的公司都有一個非常好的,經過測試的命令模式實現。肯定也有開源替代品(雖然這可能值得一個單獨的計算器問題),但肯定有現成的商用解決方案從POJO的打算像XML或JSON格式 – Uri 2011-04-06 04:06:58