设计模式:状态、策略与命令模式解析
1. 状态模式(STATE)
状态模式将特定状态的逻辑分散到代表对象状态的各个类中。不过,它并未明确规定如何管理状态对象与应用这些状态的中心对象之间的通信和依赖关系。
1.1 使状态对象常量化
在之前的设计中,每个状态类的构造函数都会接收一个 Door 对象,状态对象会保留该对象并用于更新门的状态。但这种设计会导致实例化 Door 对象时,也会实例化一整套 DoorState 对象。
为了使状态对象成为常量,有两种方法:
- 方法一:状态类仅标识下一个状态
让状态类只负责识别下一个状态,将实际更新状态变量的任务交给 Door 类。例如, Door 类的 Touch() 方法更新 _state 变量的代码如下:
public void Touch()
{
_state = _state.Touch();
}
DoorState 的子类也会实现 Touch() 方法,但会返回一个 DoorState 值。例如, DoorOpen 类的 Touch() 方法:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



