星期三, 7月 29, 2009

轉個想法..讓架構變簡單..

今天有人問我, 他在寫程式時遇到一個問題, 就是他有一個父類別Product, 有一些子類別 a..b..c..像下圖這樣..

image

他跟我說因為產品常常在新增, 每多一項就要多一個 class 去增加代表新產品, 他說他快瘋了, 問我有沒有辦法不要動到這一堆的class 我看了一下他的 class,仔細看..他的子 class 都只是簡單的 field 還有實做 products 的 method 而已, 這樣的 class 效用其實不大, 我給他的建議是, 改成只有一個class, 然後之前那些子 class 的 field 就直接用 dictionary 去處理..

image

public class products
{
public int ID;
public string name;
public Dictionary<string, string> PropertyDic = new Dictionary<string, string>();

public string GetAllInfo()
{
string info = string.Join(",", PropertyDic.Select(a => a.Value).ToArray());
return ID + " " + name + " " + info;
}

public void AddProperty(string key, string value)
{
if (PropertyDic.ContainsKey(key))
PropertyDic[key] = value;
else
PropertyDic.Add(key, value);
}
public void RemoveProperty(string key)
{
if (PropertyDic.ContainsKey(key))
PropertyDic.Remove(key);
}
}

這樣以後新增一個產品就不用再去新增一個 class 了..程式也變簡單好改了..Party..

沒有留言: