状 态 机 的 概 念 状 态 机 是 软 件 编 程 中 的 一 个 重 要 概 念
比 这 个 概 念 更 重 要 的 是 对 它 的 灵 活应 用
在 一 个 思 路 清 晰 而 且 高 效 的 程 序 中 , 必 然 有 状 态 机 的 身 影 浮 现
比 如 说 一 个 按 键 命 令 解 析 程 序 , 就 可 以 被 看 做 状 态 机 : 本 来 在 A状 态 下 ,触 发 一 个 按 键 后 切 换 到 了 B状 态 ; 再 触 发 另 一 个 键 后 切 换 到 C状 态 , 或 者 返 回 到A状 态
这 就 是 最 简 单 的 按 键 状 态 机 例 子
实 际 的 按 键 解 析 程 序 会 比 这 更 复 杂 些 ,但 这 不 影 响 我 们 对 状 态 机 的 认 识
进 一 步 看 , 击 键 动 作 本 身 也 可 以 看 做 一 个 状 态 机
一 个 细 小 的 击 键 动 作 包含 了 : 释 放 、 抖 动 、 闭 合 、 抖 动 和 重 新 释 放 等 状 态
同 样 , 一 个 串 行 通 信 的 时 序 ( 不 管 它 是 遵 循 何 种 协 议 , 标准串 口也 好、 I2C也 好; 也 不 管 它 是 有 线的 、 还是 红外的 、 无线的 )也 都可 以 看 做 由一 系列有 限的状 态 构成
显示扫描程 序 也 是 状 态 机 ; 通 信 命 令 解 析 程 序 也 是 状 态 机 ; 甚至连继电器的 吸合 /释 放 控制、 发 光管 ( LED)的 亮/灭控制又何 尝不 是 个 状 态 机
当我 们 打开思 路 , 把状 态 机 作 为一 种 思 想导入到 程 序 中 去时 , 就 会 找到 解决问题的 一 条有 效 的 捷径
有 时 候用 状 态 机 的 思 维去思 考程 序