一.定义
- 当一个对象的内在状态发生改变,允许其改变行为,这个对象看起来像改变了其类
- 角色:
(1)State:抽象状态角色 (eg:Lifestate),持有Context属性,状态内的方法带来的状态流转要使用Context改变当前状态
(2)ConcreteState:具体状态 (eg:Closingstate)
(3)Context:环境角色 - 负责具体状态的切换,该类1.持有所有状态作为常亮属性,2.持有当前状态作为属性,3.提供接口表示当前状态下的行为
二. 场景
模仿电梯在门开和门关下的操作
// 客户端调用代码:调用Context执行
public static void main(String[] args){
Context context = new Context();
context.setCurrentState(Context.ClosingState);
context.open();
context.close();
context.run();
context.stop();
}