我會用(再次)下面的類層次結構:枚舉和繼承
Event
和下面所有的類都是從事件繼承:
SportEventType1 SportEventType2 SportEventType3 SportEventType4
我已經最初設計事件類是這樣的:
public abstract class Event
{
public abstract EventType EventType { get; }
public DateTime Time { get; protected set; }
protected Event(DateTime time) {
Time = time;
}
}
用的EventType被定義爲:
public enum EventType {
Sport1,
Sport2,
Sport3,
Sport4
}
最初的想法是,每個SportEventTypeX類將設置其正確的EventType。現在我想起來了,我覺得這種做法是完全不正確的,原因如下:
- 如果我想在以後添加新的 SportEventType類,我將不得不 修改枚舉
- 如果我以後決定刪除一個 SportEventType,我覺得我不會 使用我也在與 enum很大的麻煩。
- 我有一個類變量在事件 類製作,畢竟,關於那種 類將從它, 這有點違背 繼承的目的繼承 假設。
你會如何解決這種情況?在Event類中定義一個抽象的「Description」屬性,讓每個子類實現它?有一個屬性(Java中的註釋!)設置其描述變量?在這種情況下,使用類變量而不是屬性/註釋有什麼優點/缺點?那裏有沒有其他更優雅的解決方案?
感謝
理想情況下,儘可能避免這種情況。如果你有「特定事件」的邏輯,最好把它放在子類中。 – 2010-04-06 23:46:10
@Reed - 理想情況下,我們會生活在一個理想的詞。 :) – ChaosPandion 2010-04-06 23:49:36
非常真實 - 有時要做到這一點,但它是應儘可能避免的事情...只是認爲我會把它扔出去:) – 2010-04-07 00:07:17