定义
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象,状态模式一种对象行为型模式。
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
类图
代码
public class StatePattern {
public static void main(String[] args) {
Context tom = new Context();
tom.changeState(new Happy());
tom.doSomething();
}
}
abstract class State{
abstract void doWork();
}
class Happy extends State{
@Override
void doWork() {
System.out.println("happy");
}
}
class Angry extends State{
@Override
void doWork() {
System.out.println("angry");
}
}
class Context{
private State state;
public void changeState(State state){
this.state = state;
}
public void doSomething(){
state.doWork();
}
}