状态模式

标签(空格分隔): 设计模式


在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

注意事项:在行为受状态约束的时候使用状态模式,而且状态不超过 5 个。


示例如下: 此处输入图片的描述

  1. 创建一个接口

     public interface State {
        public void doAction(Context context);
     }
    
  2. 创建实现接口的实体类

     public class StartState implements State {
         
        public void doAction(Context context) {
           System.out.println("Player is in start state");
           context.setState(this); 
        }
         
        public String toString(){
           return "Start State";
        }
     }
    
     public class StopState implements State {
         
        public void doAction(Context context) {
           System.out.println("Player is in stop state");
           context.setState(this); 
        }
         
        public String toString(){
           return "Stop State";
        }
     }
    
  3. 创建 Context 类

     public class Context {
        private State state;
         
        public Context(){
           state = null;
        }
         
        public void setState(State state){
           this.state = state;     
        }
         
        public State getState(){
           return state;
        }
     }
    
  4. 使用 Context 来查看当状态 State 改变时的行为变化

     public class StatePatternDemo {
        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());
        }
     }