除非您需要動態更改結構,否則我會編寫一個使用開關和偵聽器來處理消息的解析器。
interface MessageListener {
void message1(String field2, Object customData, Object otherData);
void message2(String field2, String field3, Object customData, Object otherData);
// other message types
}
MessageListener ml =
String firstField = getField();
switch(firstField) {
case messageType1: {
String field2 = getField();
Object customData = getData();
Object otherData = getData();
ml.message1(field2, customData, otherData);
break;
}
case messageType2: {
String field2 = getField();
String field3 = getField();
Object customData = getData();
Object otherData = getData();
ml.message2(field2, field3, customData, otherData);
break;
}
//parse other message types
default:
// report unknown message type.
}
+1關於「不要過度考慮它......」做一些簡單的工作,寫一堆單元測試以確保它可以工作,然後你就可以重構爲之後更多的涉及模式(更重要的是**如果**)您的需求增長。 – 2012-02-09 12:27:11