写一个java状态模式的详细实例

188 篇文章 7 订阅

以下是一个示例的 Java 状态模式实现:

java Copy code
// 定义状态接口
interface State {
    void handleState(Context context);
}

// 具体状态类 1
class ConcreteState1 implements State {
    public void handleState(Context context) {
        System.out.println("当前状态为状态 1");
        // 在状态 1 下执行相应的逻辑
    }
}

// 具体状态类 2
class ConcreteState2 implements State {
    public void handleState(Context context) {
        System.out.println("当前状态为状态 2");
        // 在状态 2 下执行相应的逻辑
    }
}

// 上下文类,用于维护当前状态并执行相应操作
class Context {
    private State currentState;

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

    public void request() {
        currentState.handleState(this);
    }
}

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

        // 设置初始状态为状态 1
        State state1 = new ConcreteState1();
        context.setCurrentState(state1);

        // 执行请求
        context.request();

        // 切换到状态 2
        State state2 = new ConcreteState2();
        context.setCurrentState(state2);

        // 执行请求
        context.request();
    }
}
在上述示例中,我们首先定义了一个 State 接口,它包含了状态的处理方法 handleState()。然后,我们创建了两个具体状态类 ConcreteState1 和 ConcreteState2 实现了 State 接口,并分别实现了自己的状态处理逻辑。

接下来,我们定义了一个上下文类 Context,它维护了当前状态并提供了一个公共方法 request() 用于执行相应的操作。在 Context 中,我们通过 setCurrentState() 方法设置当前状态,并在 request() 方法中调用当前状态的处理方法。

最后,在主程序中,我们创建了一个 Context 对象,并设置初始状态为状态 1。然后,调用 request() 方法执行相应的操作。随后,我们将状态切换为状态 2,并再次执行请求。

通过状态模式,我们可以实现基于不同状态的不同行为,避免了大量的条件语句和分支结构,提高了代码的可扩展性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值