状态模式(State Pattern)
The State pattern allows an object to alter its behavior when its internal state changes. The object appears to change its class.
1、Context
-定义客户感兴趣的接口。
2、State
-定义一个接口以封装与Context的一个特定状态相关的行为。
3、ConcreteState subclasses
-每一个子类实现一个与Context的一个状态相关的行为。
class Context { private State state; public Context() { this.state=new ConcreteStateA(); } public void setState(State state) { this.state=state; } public State getState() { return state; } public void Handle() { state.Handle(this); } }
abstract class State { public abstract void Handle(Context context); }
class ConcreteStateA extends State { public void Handle(Context context) { context.setState(new ConcreteStateB()); } }
class ConcreteStateB extends State { public void Handle(Context context) { context.setState(new ConcreteStateA()); } }
《设计模式:可复用面向对象软件的基础》
原文:https://www.cnblogs.com/diameter/p/13210503.html