我的理解:状态模式类似于策略模式([设计模式] 23.Strategy 策略模式),将状态的变化抽象出来(状态的抽象类)。
不同的状态继承这个状态抽象类。并实现该状态下方法的变动。
与策略模式不同的是,抽象类中一般还维护着各状态的变动。下面举例:

public class Elevator
{
 ElevatorState _elevatorState;
 
public Elevator()
 
{
  _elevatorState 
= new ElevatorStop();//默认为停止状态
 }

 
public void Run()
 
{
  _elevatorState.Display();
  _elevatorState 
= _elevatorState.NextState;
 }

}


//电梯的状态抽象

public abstract class ElevatorState
{
 
protected abstract void Display();//电梯展示灯在各状态中要显示的内容
 protected abstract ElevatorState NextState{get;}//电梯在这个状态后应该转变为什么状态
}

//电梯运行状态

public class ElevatorRun : ElevatorState
{
 
public override void Display()
 
{
  Console.WriteLine(
"电梯运行中");
 }

 
public override ElevatorState NextState
 
{
  
get return new ElevatorStop(); }
 }

}

//电梯停止状态

public class ElevatorStop : ElevatorState
{
 
public override void Display()
 
{
  Console.WriteLine(
"电梯已停止.");
 }

 
public override ElevatorState NextState
 
{
  
get return new ElevatorRun(); }
 }

}
posted on 2007-08-13 18:25  宝气狗  阅读(300)  评论(0)    收藏  举报