状态模式-C语言
C语言实现状态模式
写个小程序,来看看每个年龄段的人干嘛。 我们先规定未成年人都是学生。(学生从胎教开始计算,我的程序我说了算),18 ~ 60 之间是工作状态,60以后就退休了。(多希望这个数在能小一些呢)。那程序怎么写呢? 是不是很So easy。代码和运行结果如下:
如果在增加多个年龄段,20 ~ 35, 36 ~ 45….。 那个if else可就老美观(画面请自行脑补)。
有没有什么好的方法减少if else的好方法呢。当然有这就是设计模式中的状态模式,针对本例题其UML图如下
状态模式的好处是将于特定状态相关的行为局部化,并且将不同的状态分割开来。把状态的判断逻辑转到表示不同状态的一系列类当中,可以把复杂的逻辑判断简化。当然,如果状态判断比较简单的时候没有必要用状态模式了,If else或者条件语句还是挺香的。
状态模式通过各种状态转移逻辑分布到状态的子类之间,减少相互间的依赖。
状态模式之后的代码如下:
typedef struct _Person{
void (*action)(int)