一、我的理解
状态模式就是针对某个类设置不同的状态,然后对应每一个状态,类的行为会有不同的改变。目前的理解是感觉有点偏语义上的意思。
二、实现方式
针对类设置不同的状态,在不同状态中设置对应的行为,然后在状态中调用类时将类对象传入
三、实例
Java实例
Context类:主体类,它会具有不同的状态
package com.study.dp.state;
public class Context {
private State state;
public Context() {
state = null;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
State接口:每个状态必须实现的接口,包含了具体的行为方法
package com.study.dp.state;
public interface State {
public void doAction(Context context);
}
StartState类:状态一
package com.study.dp.state;
public class StartState implements State {
@Override
public void doAction(Context context) {
System.out.println("Player is in start state");
context.setState(this);
}
@Override
public String toString() {
return "Start State";
}
}
StopState类:状态二
package com.study.dp.state;
public class StopState implements State {
@Override
public void doAction(Context context) {
System.out.println("Player is in stop state");
context.setState(this);
}
@Override
public String toString() {
return "Stop State";
}
}
Demo类:测试类
package com.study.dp.state;
public class Demo {
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());
}
}