namespace 电灯的状态
{
//抽象状态类
abstract
class
LightState
{
public
abstract
void
PressSwitch(Light light);
//按下按钮
}
//电灯打开状态类
class
LightOn : LightState
{
public
override
void
PressSwitch(Light light)
{
light.State =
new
LightOff();
Console.WriteLine(
"电灯已关"
);
}
}
//电灯关闭状态类
class
LightOff : LightState
{
public
override
void
PressSwitch(Light light)
{
light.State =
new
LightOn();
Console.WriteLine(
"电灯已开"
);
}
}
//电灯类
class
Light
{
private
LightState state;
public
LightState State
{
get {
return
state; }
set { state = value; }
}
public
Light(LightState state)
//构造时设置初始状态
{
this
.state = state;
}
public
void
PressLightSwitch()
{
state.PressSwitch(
this
);
//转换本类的状态
}
}
class
Program
{
static
void
Main(string[] args)
{
Light light =
new
Light(
new
LightOn());
//打开状态
//反复开关。。。
light.PressLightSwitch();
light.PressLightSwitch();
light.PressLightSwitch();
light.PressLightSwitch();
light.PressLightSwitch();
}
}