上面介绍了状态机的概念,很多同学可能会说:既然状态机是数学领域中的理论,而我是程序员,这跟我有什么关系呢?确实,状态机是属于数学理论,要深入研究需要掌握离散数学等专业知识,但这并不意味着计算机领域不会用到,毕竟计算机科学中太多东西都是以数学作为基石的。

  在计算机科学中,或者干脆把范围直接缩小到我们程序员的日常开发中,我们或多或少都会接触到状态机,例如Android的
MediaPlayer
MediaCodec,其实现框架里面就包含了大量的状态管理,iOS的
GKState也使用了状态机来管理多种状态。

  其实,在软件开发里面,我们更多地是结合自动机理论和软件设计思想来设计编程模式,以此构建出更加优秀的软件。GoF 23种软件设计模式中的状态模式就是一种基于状态的设计模式。