現在我有被傳遞到實現ContainerOfThings
類的getStuff(Message)
方法約60 Message
類型。有這兩種實現方法getStuff(Message)
生成基於構件變量的字符串的ContainerOfThings
如BoxOfStuff
和BagOfTricks
的多種變型。結果也可能包含預先申請或後續數據,如標籤或連鎖數據。見下面的代碼。映射到動態串
public class BoxOfStuff implements ContainerOfThings
{
private String var1;
private String var2;
private String varN;
public String getStuff(Message message)
{
if (message.equals(Message.GET_STUFF1))
return var1;
else if (message.equals(Message.GET_STUFF2))
return "Var2 is: " + var2;
else if (message.equals(Message.GET_STUFFN))
return varN + "\n";
// Etc. for each Message.GET_*
}
// getters and setters for each var*
}
public class Message
{
private String id = null;
private Message(String id)
{ this.id = id; }
public final String toString()
{ return this.id; }
public static final Message GET_STUFF1 = new Message("V1");
public static final Message GET_STUFF2 = new Message("V2");
public static final Message GET_STUFFN = new Message("VN");
}
我試圖找到一個滿足以下目標的設計。 (1)從getStuf()返回的字符串需要反映實現類的成員字段的當前狀態。 (2)此外,我寧願遠離一個令人難以置信的長系列if/else if
塊。一個令人擔憂的問題是易於改變爲持續的數據驅動的可配置對象方法,其中Map
適用於這種方法。 (3)設計應該允許簡單的維護和/或編輯。這可以工作,但有一點凌亂
一個設計是創建在構造函數初始化所有鍵/值的地圖,並重置每個setter方法中的任何鍵/值對。通過這種方式,對getStuff(Message)
的響應在更改後更新爲新內容(即:在setVar*()
方法中)。任何其他想法?
澄清:你想創建一個'地圖<信息,字符串>''那裏格式String'輸出? – 2010-11-15 23:00:45
該字符串應該包含任何引用成員變量(調用getStuff()時的當前值)的當前值,並且具有任何前置或後置字符串數據。 – Aaron 2010-11-15 23:03:33
消息類型的結果字符串的格式是否因IContainerOfThings實現而異? – 2010-11-15 23:16:23