对象的行为取决于它的状态,并且必须在运行时改变它的行为
角色:
1.Context
定义客户感兴趣的接口。
维护一个ConcreteState子类的实例,这个实例定义当
2.State
定义一个接口以封装与Context的一个特定状态相关的行为。
3.ConcreteStatesubclasses
每一子类实现一个与Context的一个状态相关的行为。
距离:
public interface State {//状态的接口
public void run();
}
public class Context implements State {
private State state=new Rain();
public void setState(State state){
this.state=state;
}
@Override
public void run() {
state.run();
}
}
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
Context context=new Context();
context.run();
context.setState(new Snow());//改变状态
context.run();
}
}
//状态类
public class Rain implements State{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("在下雨");
}
}
……