设计模式——状态模式介绍

状态模式是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。它基于对象的内部状态而改变其行为,看起来好像修改了对象的类。

状态模式的关键组件有三个:上下文(Context)、状态(State)和具体状态(Concrete State)。

下面是一个例子来说明状态模式的应用:

java 复制代码
// 抽象状态类
interface State {
    void handle(Context context);
}

// 具体状态类1
class ConcreteState1 implements State {
    public void handle(Context context) {
        System.out.println("当前状态是状态1");
        context.setState(new ConcreteState2()); // 设置下一个状态
    }
}

// 具体状态类2
class ConcreteState2 implements State {
    public void handle(Context context) {
        System.out.println("当前状态是状态2");
        context.setState(new ConcreteState1()); // 设置下一个状态
    }
}

// 上下文类
class Context {
    private State state;

    public Context(State state) {
        this.state = state;
    }

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

    public void request() {
        state.handle(this);
    }
}

// 客户端代码
public class Main {
    public static void main(String[] args) {
        // 创建初始状态
        State initialState = new ConcreteState1();
        Context context = new Context(initialState);

        // 发起请求
        context.request(); // 打印"当前状态是状态1"
        context.request(); // 打印"当前状态是状态2"
        context.request(); // 打印"当前状态是状态1"
    }
}

在上述示例中,状态模式被用于管理上下文(Context)对象的不同状态。每个具体状态(Concrete State)都实现了状态(State)接口,并根据需要进行状态转换。上下文类(Context)通过委托给当前状态对象来处理请求,并可以在运行时更改状态。

通过状态模式,客户端代码可以与上下文对象进行交互,而不需要直接处理复杂的状态逻辑。这对于需要根据状态改变行为的场景非常有用,例如自动售货机中的不同状态(待机、售货、缺货等)的管理。

相关推荐
折哥的程序人生 · 物流技术专研15 小时前
Java 23 种设计模式:从踩坑到精通 | 适配器模式 —— 让不兼容的接口也能一起工作
java·设计模式·面试·适配器模式·单一职责原则
布朗克16815 小时前
33 设计模式精讲
java·单例模式·设计模式
前端不太难15 小时前
鸿蒙游戏世界模型:实现原理 + Demo实现
游戏·状态模式·harmonyos
geovindu17 小时前
python: Generators Pattern
开发语言·python·设计模式·生成器模式
星恒随风17 小时前
C++ 类和对象入门(六):友元、内部类、匿名对象和编译器优化
开发语言·c++·笔记·学习·状态模式
Curvatureflight17 小时前
大数据量 Excel 导出怎么优化?一套可落地的异步化方案
java·后端·excel·状态模式
雨浓YN18 小时前
基于设计模式的Winform软件框架-01Xml\Log\Ini日志(单例模式+生产者消费者模式)
单例模式·设计模式
星恒随风1 天前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
艾利克斯冰1 天前
Java 设计模式-行为型模式(更新中)
java·开发语言·设计模式
星心源七境1 天前
七境体系全解析:从六韬兵法到AI锁颜,一套贯穿古典智慧与现代应用的成长操作系统
人工智能·设计模式·设计