状态模式定义
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
状态模式结构图
状态模式角色介绍
环境类,Context,环境类又称为上下文类,它是拥有多种状态的对象。同时还维护一个抽象状态类State的实例,这个实例定义当前状态,在具体实现时,它是一个State子类的对象。
抽象状态类,State,一个抽象类或者接口,声明了各种不同状态对应的方法,而在其子类中实现类这些方法。
具体状态类,ConcreteState,它是抽象状态类的子类,每一个具体状态类对应环境的一个具体状态,状态子类都会持有环境类对象,当状态发生变更时,将变更的状态同步给环境对象。
状态模式结构代码
抽象状态类:
public interface State {
void handler();
}
具体状态类A:
public class ConcreteStateA implements State {
private Context context;
public ConcreteStateA(Context context) {
this.context = context;
}
public void handler() {
//执行状态A逻辑&