层次状态机的设计思想--Apple的学习笔记

一,前言

之前在搜索循环队列的时候,不小心搜索到了状态机设计的书,作为c语言开发者,所谓的面向对象也就是结构体当做一个对象,所谓的继承就是大结构体打包小结构体。然后c语言主要是面向过程的语言,我以前以为只有复杂的逻辑才能使用状态机,简单的逻辑无法用状态机设计,看了这书后才发现所有功能都可以用状态机来设计的。状态机算是面向对象的设计,然后此对象就是状态。

我也曾经用vb和c#和QT制作做计算器,仔细回想下,我做的计算器只支持简单的整数运算,根本不算个计算器。看了此书后,才发现其实我根本不懂状态机的设计,此书最重要让我学习到的就是一个状态机继承的概念,之前看UML的设计中主要关注时序图,没有看状态机,在UML就是叫层次状态机。

三,计算器的状态机设计

把信号 PLUS ,MINUS, MULTIPLY 和 DIVIDE合并成一个高级的信号 OPER (操作数)。这个变换避免了在两个转换(从 operand1 到opEntered ,和从 result 到 opEntered )上重复相同的触发。