设计模式——状态模式(State Pattern)

文章目录

  • 一、状态模式(State Pattern)
    • 类型:行为型模式
    • 功能:
  • 二、例子
    • 1、菜鸟教程例子
      • 1.1、定义状态接口
      • 1.2、定义开始状态实现类
      • 1.3、定义停止状态实现类
      • 1.4、创建 Context 类
      • 1.5、使用 Context 来查看当状态 State 改变时的行为变化。

一、状态模式(State Pattern)

类型:行为型模式

功能:

对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。

二、例子

1、菜鸟教程例子

1.1、定义状态接口

public interface State {
   public void doAction(Context context);
}

1.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";
   }
}

1.3、定义停止状态实现类

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";
   }
}

1.4、创建 Context 类

public class Context {
   private State state;
 
   public Context(){
      state = null;
   }
 
   public void setState(State state){
      this.state = state;     
   }
 
   public State getState(){
      return state;
   }
}

1.5、使用 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());
   }
}

你可能感兴趣的:(Programming,Concepts,设计模式,状态模式,java,state)