粉粉蕉的笔记本粉粉蕉的笔记本
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • 设计模式

  • 创建型

    • 工厂模式
    • 单例模式
    • 建造者模式
    • 原型模式
  • 结构型

    • 适配器模式
    • 装饰模式
    • 代理模式
    • 外观模式
    • 桥接模式
    • 组合模式
  • 行为型

    • 享元模式
    • 策略模式
    • 模板方法模式
    • 观察者模式
    • 迭代子模式
    • 责任链模式
    • 命令模式
    • 备忘录模式
    • 状态模式
    • 访问者模式
    • 中介者模式
    • 解释器模式

状态模式

描述

代码实现示例

class Test{
  public void main(String[] args){
    //初始化状态
    Context context = new Context();
    //切换状态
    context.handle();
    //..
    //切换状态
    context.handle();
  }
}


//抽象状态类
abstract class State {
    public abstract void handle(Context context);
}


//环境类
class Context {
private State state;
//定义环境类的初始状态
public Context() {this.state = new Begin();}
//设置新状态
public void setState(State state) {this.state = state;}
//读取状态
public State getState() {return (state);}
//对请求做处理
public void handle() {state.handle(this);}
}

//具体状态Begin类
class Begin extends State {
    public void handle(Context context) {
        System.out.println("当前状态是 Begin.");
        //执行完该状态后,需要自动切换到下一个状态
        context.setState(new Finish());
    }
}
//具体状态Finish类
class Finish extends State {
    public void handle(Context context) {
        System.out.println("当前状态是 Finish.");
        //执行完该状态后,需要自动切换到下一个状态
        context.setState(new Begin());
    }
}

实际应用场景

FAQ

Last Updated: 10/11/23, 6:07 AM
Contributors: dongyz8
Prev
备忘录模式
Next
访问者模式