我正在構建一個需要許多具有類似屬性(例如:學生,教師,聯繫人,用戶)的子類的應用程序。性能將會有相當大的重疊,但也有很多不同之處。例如,一個人可能是學生,聯繫人和用戶。這裏是(限清晰度)的例子:對於多個類似的類,什麼被認爲是好的設計
Person
FirstName
LastName
DOB
CurrentAge
Student <- Person
StudentId
Average
Email
Phone
Contact <- Person
Email
Phone
Address
User <- Person
Email
UserName
DOB
CurrentAge
我想避免編寫代碼多次 - 例如:電子郵件驗證碼,計算年齡所需的代碼等。此外,我們很可能不得不增加其他課程稍後會有類似的重疊和差異。
什麼被認爲是處理這個問題的好設計,或者什麼樣的設計模式(如果有)涵蓋了這個?
從我對設計模式的基本理解來看,Decorator看起來不正確b/c我沒有添加行爲。複合不正確的B/C它不是遞歸的。我也明白,這可能不是一個理想的模式,但是,這似乎是一個非常普遍的要求。
如果很重要,這將主要用於ASP.NET/C#/VB.NET。
其他SO問題有兩個相似的類/對象(通常是子類)的答案,但我找不到任何類似的任意數量的類。
關於關聯數據庫設計的任何建議也是受歡迎的。
我似乎無法接受兩個答案是正確的,但我的最終解決方案將incoroporate組成建議從保羅Sonier來處理存儲數據和驗證數據本身,從界面和角色的建議@Don Robby處理重疊屬性(實現多個接口)和邏輯(驗證IContact至少指定一個聯繫方法的角色)。 –