举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java状态模式实例 Java 状态模式

java状态模式实例 Java 状态模式

2023-04-07 14:31 Java教程

java状态模式实例 Java 状态模式

java状态模式实例

Java状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。它通过将各种状态封装到不同的子类中来实现,从而使得对象在不同的情况下有不同的行为。

Java状态模式的一个典型应用是电梯(Elevator)控制器。电梯有多个不同的状态(例如“上升”、“下降”、“停止”、“打开门”和“关闭门”),并且根据当前的情况会有不同的行为。例如:当电梯处于上升状态时,它会一直上升直到到达顶部或者遇到一个请求停止的信号。

public interface ElevatorState { 

    public void openDoor(); 

    public void closeDoor(); 

    public void moveUp(); 

    public void moveDown(); 
} 
public class ElevatorContext { 

    private ElevatorState state; 

    public ElevatorContext() { 

        state = new StoppedState(); // set initial state to stopped state. 

    } 

    public void setState(ElevatorState state) { 

        this.state = state; 

    }  

    public void openDoor() {  

        state.openDoor();  

    }  

    public void closeDoor() {  

        state.closeDoor();  

    }  

    public void moveUp() {  

        state.moveUp();  

    }  

    public void moveDown() {  

        state.moveDown();  

     }     
}    

Java 状态模式

Java设计模式 - 状态模式


在状态模式中,类行为基于其状态而改变。

状态模式是一种行为模式。

当使用状态模式时,我们创建各种状态对象和上下文对象,其行为随着其状态对象改变而变化。

例子

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

class StartState implements State {
  public void doAction(Context context) {
    System.out.println("In start state");
    context.setState(this);
  }

  public String toString() {
    return "Start State";
  }
}

class StopState implements State {

  public void doAction(Context context) {
    System.out.println("In stop state");
    context.setState(this);
  }

  public String toString() {
    return "Stop State";
  }
}

class PlayState implements State {
  public void doAction(Context context) {
    System.out.println("In play state");
    context.setState(this);  
  }
  public String toString() {
    return "Play State";
  }
}

class Context {
  private State state;

  public Context() {
    state = null;
  }

  public void setState(State state) {
    this.state = state;
  }

  public State getState() {
    return state;
  }
}

public class Main {
  public static void main(String[] args) {
    Context context = new Context();

    StartState startState = new StartState();
    startState.doAction(context);

    System.out.println(context.getState().toString());

    PlayState playState = new PlayState();
    playState.doAction(context);
    
    StopState stopState = new StopState();
    stopState.doAction(context);

    System.out.println(context.getState().toString());
  }
}

上面的代码生成以下结果。

阅读全文
以上是鳄鱼CMS为你收集整理的java状态模式实例 Java 状态模式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们