dev*_*ium 4 c# java oop inheritance enums
假设我已经定义了以下类:
public abstract class Event {
public DateTime Time { get; protected set; }
protected Event(DateTime time) {
Time = time;
}
}
Run Code Online (Sandbox Code Playgroud)
你更喜欢这个:
public class AsleepEvent : Event {
public AsleepEvent(DateTime time) : base(time) { }
}
public class AwakeEvent : Event {
public AwakeEvent(DateTime time) : base(time) { }
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
public enum StateEventType {
NowAwake,
NowAsleep
}
public class StateEvent : Event {
protected StateEventType stateType;
public StateEvent(DateTime time, StateEventType stateType) : base(time) {
stateType = stateType;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么?我通常更倾向于第一种选择,但我无法解释原因.使用一个而不是另一个是完全相同还是有任何优势?也许用第一种方法更容易添加更多"状态",尽管在这种情况下,我100%肯定我只想要两种状态:现在醒来,现在睡着了(它们表示一个人醒来,一个人睡着的时刻).