给我一个实际的、非平凡的使用状态模式的例子。

8

我正在寻找一个使用状态设计模式解决或简化有趣或复杂状态转换的示例。有很多三个或四个简单状态的示例。但是,有没有来自实际项目的代码,其中包含子状态和超过一小部分的转换?这种代码实际上激励了模式的使用。奖励指向代码的指针!

2个回答

17

到目前为止,我所看到的状态模式在实际生活中的一个应用是在线视频播放器。

您需要处理播放、暂停、缓冲、连接、寻找甚至其他状态。

当播放器处于播放或暂停状态时,它会响应用户交互事件。
当播放器处于“连接”状态时,它可能没有足够的数据来知道视频持续时间,因此应该禁用搜索栏。
一旦播放器连接成功,它将进入缓冲状态。在缓冲状态下,用户可以搜索或停止视频。但是,如果他尝试暂停或播放视频,则该命令将被保存以备稍后使用,以便在缓冲完成后,视频要么暂停,要么开始播放等等。


2

交通灯系统(基于时间触发| 基于传感器[事件]触发)

状态:红色,黄色,绿色(最简单的例子)

转换:在计时器变化后,从红色变为绿色,从绿色变为黄色,从黄色变为红色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接