11.3

状态模式

当涉及状态模式的示例时,我们可以以一个简单的交通信号灯系统为例。在这个示例中,我们有三种状态:红灯、绿灯和黄灯。根据当前状态的不同,交通信号灯将采取不同的行为。

首先,我们需要定义一个状态接口,表示交通信号灯的状态:

// 状态接口
public interface TrafficLightState {
    void display();
}

然后,我们可以实现具体的状态类,例如红灯状态、绿灯状态和黄灯状态:

// 红灯状态
public class RedLightState implements TrafficLightState {
    @Override
    public void display() {
        System.out.println("红灯停");
    }
}

// 绿灯状态
public class GreenLightState implements TrafficLightState {
    @Override
    public void display() {
        System.out.println("绿灯行");
    }
}

// 黄灯状态
public class YellowLightState implements TrafficLightState {
    @Override
    public void display() {
        System.out.println("黄灯等待");
    }
}

接下来,我们需要一个上下文类来维护当前的状态,并根据状态的变化调用相应的行为:

// 交通信号灯上下文类
public class TrafficLightContext {
    private TrafficLightState state;

    public TrafficLightContext() {
        // 初始状态为红灯
        state = new RedLightState();
    }

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

    public void displayState() {
        state.display();
    }
}

最后,我们可以创建一个简单的示例来演示状态模式的使用:

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

        context.displayState(); // 当前状态为红灯

        context.setState(new GreenLightState());
        context.displayState(); // 当前状态为绿灯

        context.setState(new YellowLightState());
        context.displayState(); // 当前状态为黄灯
    }
}
posted @ 2024-11-20 10:20  liuxuechao  阅读(2)  评论(0编辑  收藏  举报