16、设计模式:状态、策略与命令模式解析

设计模式:状态、策略与命令模式解析

1. 状态模式(STATE)

状态模式将特定状态的逻辑分散到代表对象状态的各个类中。不过,它并未明确规定如何管理状态对象与应用这些状态的中心对象之间的通信和依赖关系。

1.1 使状态对象常量化

在之前的设计中,每个状态类的构造函数都会接收一个 Door 对象,状态对象会保留该对象并用于更新门的状态。但这种设计会导致实例化 Door 对象时,也会实例化一整套 DoorState 对象。

为了使状态对象成为常量,有两种方法:
- 方法一:状态类仅标识下一个状态
让状态类只负责识别下一个状态,将实际更新状态变量的任务交给 Door 类。例如, Door 类的 Touch() 方法更新 _state 变量的代码如下:

public void Touch()
{
    _state = _state.Touch();
}

DoorState 的子类也会实现 Touch() 方法,但会返回一个 DoorState 值。例如, DoorOpen 类的 Touch() 方法:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值