C# 对象依赖关系和交互
编辑: 我正在钻研OOP的概念,但当我认为我在头脑中找到了它时,我又在实践中感到困惑 我创建了两个类: 灯光(表示灯泡) 开关,它应该改变灯泡的状态C# 对象依赖关系和交互,c#,oop,C#,Oop,编辑: 我正在钻研OOP的概念,但当我认为我在头脑中找到了它时,我又在实践中感到困惑 我创建了两个类: 灯光(表示灯泡) 开关,它应该改变灯泡的状态 public class Switch { private Light _light; public LightState State { get { return _light.CurrentState; } private set { _light.CurrentState = valu
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
对象应该如何更改开关的状态?开关在这里是多余的。将这些方法置于灯下
并执行
public class Light
{
....
public void Flip()
{
if( CurrentState == LightState.ON )
{
CurrentState = LightState.OFF;
} else {
CurrentState = LightState.ON;
}
}
}
一个人能在光下行动的能力
public class Man
{
....
public void TurnLightOn(Light light)
{
light.CurrentState = LightState.ON;
}
public void FlipLight(Light light)
{
light.Flip();
}
}
Man
将从初始化的开关调用TurnLightsOff()
或TurnLightsOn()
,为什么不为state创建一个枚举,而不是一个带有奇怪列表验证的int呢。一个开关控制一个灯泡,但一个人可以控制多个开关。这种关系几乎是一样的。哦,说实话。我对这件事有一种奇怪的似曾相识的感觉question@SamIam什么意思?
public class Man
{
....
public void TurnLightOn(Light light)
{
light.CurrentState = LightState.ON;
}
public void FlipLight(Light light)
{
light.Flip();
}
}