在一個通用面向對象的語言(比如C++,C#,JAVA) 我有地圖上用字符串ID和相同ID的對象也是關鍵的相對對象的強制打字字符串鍵/ IDS
class Foo(){
Foo(string id){this.id = id;}
string id;
string otherProperty;
}
map<string,Foo> foos;
現在如果我想添加一個對象我
map.add("myFirstID", new Foo("myFirstID"));
map.add("mySecondID", new Foo("mySecondID"));
我不喜歡重複的字符串,它只會得到最糟糕的(想通過關鍵字進行檢索時,它只是爆炸)。
我不能使用枚舉(因爲像C++中,它不能很容易地轉換成字符串一些語言,我需要它)
唯一的選擇似乎是
const string MY_FIRST_ID = "myFirstID";
const string MY_SECOND_ID = "mySecondID";
級聯
到那麼
foos.add(MY_FIRST_ID, new Foo(MY_FIRST_ID));
該解決方案是更好的,它仍然是非常冗長,仍然有在同一類中的一些耦合,有一個在值沒有執行(也像有一個枚舉);
你能想出更好的模式嗎?
PS:另一種解決方案是隻使用枚舉作爲鍵,並把字符串作爲一個簡單的字段。但是,這需要增加Foo和FooManager之間的高耦合(類實例foo的情況下)
謝謝,但問題只是推遲到第一個需要的map.get(「myFirstID」); 此外,不提供任何保證,也不保證所提供的價值。 – jalone