【发布时间】:2015-02-20 05:10:36
【问题描述】:
已编辑:
我正在深入研究 OOP 概念,但是当我认为我在脑海中想通了它时,我在实践中再次感到困惑。
我创建了两个类: Light(代表一个灯泡)
public enum LightState { ON, OFF }
public class Light
{
private LightState _state;
public LightState CurrentState
{
get { return _state; }
set { _state = value; }
}
public Light() : this(LightState.OFF) { }
public Light(LightState state)
{
CurrentState = state;
}
}
开关,应该改变灯泡的状态。
public class Switch
{
private Light _light;
public LightState State
{
get { return _light.CurrentState; }
private set { _light.CurrentState = value; }
}
public Switch(Light light)
{
_light = light;
}
public void TurnLightsOff()
{
if (State.Equals(LightState.OFF))
{
PrintState(LightState.OFF);
}
else
{
State = LightState.OFF;
}
}
public void TurnLightsOn()
{
if (State.Equals(LightState.ON))
{
PrintState(LightState.ON);
}
else
{
State = LightState.ON;
}
}
}
我没有得到交互部分,在我的示例中是否正确完成?
假设我介绍另一个类Man,谁可以打开/关闭开关,那么Man对象应该如何改变Switch的状态?
【问题讨论】:
-
Man将从初始化的Switch调用TurnLightsOff()或TurnLightsOn() -
为什么不为 state 创建一个枚举,而不是一个带有列表的奇怪验证的 int。其目的过于复杂
-
一个开关控制一个灯泡,但一个人可以控制多个开关。关系几乎相同。 OO明智的说法。
-
我对这个问题有一种似曾相识的奇怪感觉
-
@SamIam 你是什么意思?