状态是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为。
该模式将与状态相关的行为抽取到独立的状态类中, 让原对象将工作委派给这些类的实例, 而不是自行进行处理。
复杂度:
流行度:
使用示例: 在 Java 语言中, 状态模式通常被用于将基于 switch
语句的大型状态机转换为对象。
这里是核心 Java 程序库中一些状态模式的示例:
识别方法: 状态模式可通过受外部控制且能根据对象状态改变行为的方法来识别。
媒体播放器的接口
在本例中, 状态模式允许媒体播放器根据当前的回放状态进行不同的控制行为。 播放器主类包含一个指向状态对象的引用, 它将完成播放器的绝大部分工作。 某些行为可能会用一个状态对象替换另一个状态对象, 改变播放器对用户交互的回应方式。
states
states/State.java: 通用状态接口
states/LockedState.java
states/ReadyState.java
states/PlayingState.java
ui
ui/Player.java: 播放器的主要代码
ui/UI.java: 播放器的 GUI
Demo.java: 初始化代码
OutputDemo.png: 屏幕截图