public class Context { private State state; public State State { get { return state; } set { state = value; } } public Context(State state) { this.state = state; } /// <summary> /// /// </summary> public void Request() { state.Handler(this); } } /// <summary> /// /// </summary> public abstract class State { public abstract void Handler(Context text); } public class ContextStateA:State { public override void Handler(Context text) { Console.WriteLine("当前状态是A"); text.State = new ContextStateB(); } } public class ContextStateB:State { public override void Handler(Context text) { Console.WriteLine("当前状态是B"); text.State = new ContextStateA(); } }
调用:
ContextStateA a=new ContextStateA(); Context text=new Context(a); text.Request(); text.Request(); Console.ReadKey();