状态模式(State Pattern)中,类的行为是基于它的状态改变的。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
1. 状态模式
package com.andrew.pattern0308.state.model01; public interface State { public void doAction(Context context); }
package com.andrew.pattern0308.state.model01; public class StartState implements State { @Override public void doAction(Context context) { System.out.println("Player is in start state"); context.setState(this); } public String toString() { return "Start State"; } } package com.andrew.pattern0308.state.model01; public class StopState implements State { @Override public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString() { return "Stop State"; } }
package com.andrew.pattern0308.state.model01; public class Context { private State state; public Context() { state = null; } public State getState() { return state; } public void setState(State state) { this.state = state; } }
package com.andrew.pattern0308.state.model01; /** * 1. 状态模式 * * @author andrew * @date 2018/09/01 */ public class Client { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); } } 运行结果: Player is in start state Start State Player is in stop state Stop State