介绍
当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类 -设计模式之禅第2版
状态模式可以分为三部分:状态,引起状态发生改变的事件,当前状态下进行的行为。
将这些抽象为角色的话,有
代码
状态
package cn.zjm404.stu.dp.behavior.state;public abstract class AbstractState {protected Context context;public void setContext(Context _context){this.context = _context;}public abstract void handle();}
package cn.zjm404.stu.dp.behavior.state;public class ConcreteState1 extends AbstractState{@Overridepublic void handle() {System.out.println("hello world");}}
package cn.zjm404.stu.dp.behavior.state;public class ConcreteState2 extends AbstractState{@Overridepublic void handle() {System.out.println("HELLO WORLD");}}
环境
package cn.zjm404.stu.dp.behavior.state;/*** 进行状态切换*/public class Context {public final static AbstractState STATE1 = new ConcreteState1();public final static AbstractState STATE2 = new ConcreteState2();private AbstractState state;public void setState(AbstractState _state){this.state = _state;}public AbstractState getState(){return this.state;}public void handle(){this.state.handle();}}
Client
package cn.zjm404.stu.dp.behavior.state;public class Client {public static void main(String[] args) {Context context = new Context();context.setState(Context.STATE1);context.handle();}}
