【发布时间】:2010-04-08 16:20:22
【问题描述】:
假设我定义了以下类:
public abstract class Event {
public DateTime Time { get; protected set; }
protected Event(DateTime time) {
Time = time;
}
}
这之间你更喜欢什么:
public class AsleepEvent : Event {
public AsleepEvent(DateTime time) : base(time) { }
}
public class AwakeEvent : Event {
public AwakeEvent(DateTime time) : base(time) { }
}
还有这个:
public enum StateEventType {
NowAwake,
NowAsleep
}
public class StateEvent : Event {
protected StateEventType stateType;
public StateEvent(DateTime time, StateEventType stateType) : base(time) {
stateType = stateType;
}
}
为什么?我通常更倾向于第一种选择,但我无法解释为什么。它是完全一样的还是使用一个而不是另一个有什么优势?也许使用第一种方法更容易添加更多“状态”,尽管在这种情况下我 100% 确定我只想要两种状态:现在醒着,现在睡着了(它们表示一个人醒来和一个人睡着的时刻)。
【问题讨论】:
标签: c# java inheritance oop enums