用类来表示状态。
示例
一个警戒状态每小时会改变一次的报警系统。
类图
时序图
State接口
1 | public interface State { |
DayState类
1 | public class DayState implements State { |
NightState类
1 | public class NightState implements State { |
Context接口
1 | public interface Context { |
SafeFrame类
1 | import java.awt.*; |
Main类
1 | public class Main { |
运行结果
登场角色
State(状态)
State角色表示状态,定义了根据不同状态进行不同处理的接口(API)。该接口(API)是那些处理内容依赖于状态的方法的集合。在示例程序中,由State接口扮演此角色。
ConcreteState(具体状态)
ConcreteState角色表示各个具体的状态,它实现了State接口。在示例程序中,由DayState类和NightState类扮演此角色。
Context(状况、前后关系、上下文)
Context角色持有表示当前状态的ConcreteState角色。此外,它还定义了供外部调用者使用State模式的接口(API)。在示例程序中,由Context接口和SafeFrame类扮演此角色。