本文从简单的例子入手,逐步演变成非常复杂的程序。
在
简明 状态模式(5.8)
中,状态之间的变换由外界控制,或者说,多种状态是分割的、无关的。状态模式最有趣的地方正是讨论其状态的变迁。
1.引子
空调(air-condition)的遥控器有
两个按钮
(更多的按钮
在后面的例子中引入),
power/电源键和cool/制冷键
。空调的运行呈现
3个状态,停止/Off、仅送风/FanOnly、制冷/Cool。
起始状态为Off,状态变化图如下所示。
这是简化的有限状态机(Finite State Machine、FSM或者Finite State Automata)图形,使用了状态图的3个元素:①气泡,表示状态(
state
);②连接状态的箭头表示转换(
transition
);③箭头上的标记前者为事件(
event
)。
状态的转换,看图说话。按power键,则Off→FanOnly、Cool→Off等;按cool,则Off→Off (没有画出来,喜欢全面一点就自己画吧)。
对于这种简单的状态的转换,yqj2065还是喜欢
分支语句
。
,简洁明快。
例程 4-5 简洁明快
package property.state.stateMachine;
import static tool.Print.*;//pln
/**
* 空调Aircon。简单的模型:
* 遥控器有两个按钮(更多的按钮在下面的例子中引入),power电源键和cool制冷键。
* 空调的运行呈现3个状态,停止/Off、仅送风/FanOnly、制冷/Cool。
* 起始状态为Off
* @author (yqj2065)
* @version 0.1
*/
public class Aircon0{
// off