写一个Java状态设计模式代码
时间: 2023-09-07 07:04:49 浏览: 141
### 回答1:
public class StatePattern {
private State currentState;
// Getters and setters
public void setState(State state){
this.currentState = state;
}
public State getState(){
return currentState;
}
public void doAction(){
this.currentState.doAction();
}
}public interface State {
public void doAction();
}public class StateA implements State {
@Override
public void doAction(){
System.out.println("执行状态A操作");
}
}public class StateB implements State {
@Override
public void doAction(){
System.out.println("执行状态B操作");
}
}public class TestStatePattern {
public static void main(String[] args){
StatePattern statePattern = new StatePattern();
statePattern.setState(new StateA());
statePattern.doAction();
statePattern.setState(new StateB());
statePattern.doAction();
}
}我可以给你示例一个Java状态设计模式的代码:public class StatePattern {private State currentState;// Getters and setterspublic void setState(State state){this.currentState = state;public State getState(){return currentState;public void doAction(){this.currentState.doAction();}public interface State {public void doAction();}public class StateA implements State {@Overridepublic void doAction(){System.out.println("执行状态A操作");}public class StateB implements State {@Overridepublic void doAction(){System.out.println("执行状态B操作");}public class TestStatePattern {public static void main(String[] args){StatePattern statePattern = new StatePattern();statePattern.setState(new StateA());statePattern.doAction();statePattern.setState(new StateB());statePattern.doAction();}}
### 回答2:
状态设计模式(State Design Pattern)是一种行为型设计模式,它允许一个对象在内部状态改变时改变其行为。这种模式将对象的状态封装成一个独立的类,使得对象的状态可以相互转换而不会影响其它部分。
以下是一个使用Java实现状态设计模式的简单例子:
首先,我们定义一个接口State,表示状态对象的通用行为:
```java
public interface State {
void handle();
}
```
然后,我们定义几个具体的状态类,实现State接口:
```java
public class StartState implements State {
@Override
public void handle() {
System.out.println("启动状态");
}
}
public class StopState implements State {
@Override
public void handle() {
System.out.println("停止状态");
}
}
public class PauseState implements State {
@Override
public void handle() {
System.out.println("暂停状态");
}
}
```
接下来,我们定义一个Context类,用来维护当前状态,并在状态改变时触发相应的行为:
```java
public class Context {
private State currentState;
public Context() {
this.currentState = new StopState(); // 初始状态为停止状态
}
public void setState(State state) {
this.currentState = state;
}
public void request() {
currentState.handle();
}
}
```
最后,我们可以使用这些类来展示状态设计模式的使用:
```java
public class Main {
public static void main(String[] args) {
Context context = new Context();
context.request(); // 输出:停止状态
context.setState(new StartState());
context.request(); // 输出:启动状态
context.setState(new PauseState());
context.request(); // 输出:暂停状态
}
}
```
通过使用状态设计模式,我们将对象的状态和行为解耦,使得状态的变化可以独立于对象的行为。这样,我们可以在不改变对象自身的情况下改变其行为,从而实现更高度的灵活性和可扩展性。
阅读全文