2013-08-28 68 views
0

我正在嘗試使用pre-poulated數據構建映射對象,並試圖找到最好的方法來實現它。建築物映射對象的設計模式

我想實現這樣的事情。

public static class CodeNameMapping 
    { 
     private static Dictionary<string, string> _mapping = new Dictionary<string, string>(); 
     static CodeNameMapping() 
     { 
      _mapping.Add(Constants.CODE_FS, PageNames.FB_PAGE); 
      _mapping.Add(Constants.CODE_MA,PageNames.MA_PAGE); 
     } 

     public static string GetPageNameFor(string code) 
     { 
      return _mapping[code]; 
     } 
    } 

這是實現這個目標的好方法嗎?或者有沒有這樣做的任何其他更好的方式(我能想到的工廠???)

+1

您可能還想考慮從配置文件構建這些映射。根據我的經驗,這些類型的映射有強烈的變化趨勢。我不知道你的地圖代表什麼;有些情況下這些東西是真正的恆定的,或者它們完全在你的代碼控制之下。但大多數情況下,您最終都需要更改映射或添加一些新的映射。 –

回答

0

你可以使用靜態初始化一個字典,像這樣:?

public static class CodeNameMapping 
{ 
    private static Dictionary<string, string> _mapping = new Dictionary<string, string>{ 
     {Constants.CODE_FS, PageNames.FB_PAGE}, 
     {Constants.CODE_MA, PageNames.MA_PAGE} 
    }; 

    public static string GetPageNameFor(string code) 
    { 
     return _mapping[code]; 
    } 

} 

而且,裏面GetPageNameFor,你可能想要確保密鑰首先存在。