一、定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.
状态模式最终要的是对其状态进行分装,几个内在状态之间进行切换。当一个状态改变时,就设置场景类的状态。而从调用者的角度看,场景类就像改变了类行为一样。(其实就是状态类进行切换,调用了不同状态类的同名方法而已)
二、简单代码示例
1、状态封装 此处设置了4个状态 睡觉状态,起床状态,吃饭状态,听课状态
public abstract class States {
protected Context context;
public void setContex(Context context) {
this.context = context;
}
abstract void getUp();
abstract void eatBreakfeast();
abstract void listenClass();
abstract void sleep();
}
public class SleepState extends States {
@Override
void getUp() {
// TODO Auto-generated method stub
System.out.println("我要开始起床了"); // 起床了就应该进入起床状态;
super.context.setCurrentState(Context.getUpState);// 状态转换。重新设置Context的当前状态
super.context.getCurrentState().getUp();
}
@Override
void eatBreakfeast() {
// TODO Auto-generated method stub
// 睡觉状态下 不能直接转到吃饭 状态 必须先起床
}
@Override