状态模式-C语言

本文介绍了如何使用C语言实现状态模式,通过实例展示了如何避免复杂的if-else逻辑,阐述了状态模式的好处,即将状态相关行为局部化并分割不同状态,减少相互依赖。文章通过创建Student和Work结构体来表示不同状态,并利用函数指针实现状态转换,从而简化代码。
摘要由CSDN通过智能技术生成

状态模式-C语言

C语言实现状态模式
写个小程序,来看看每个年龄段的人干嘛。 我们先规定未成年人都是学生。(学生从胎教开始计算,我的程序我说了算),18 ~ 60 之间是工作状态,60以后就退休了。(多希望这个数在能小一些呢)。那程序怎么写呢? 是不是很So easy。代码和运行结果如下:
在这里插入图片描述
如果在增加多个年龄段,20 ~ 35, 36 ~ 45….。 那个if else可就老美观(画面请自行脑补)。

有没有什么好的方法减少if else的好方法呢。当然有这就是设计模式中的状态模式,针对本例题其UML图如下
在这里插入图片描述
状态模式的好处是将于特定状态相关的行为局部化,并且将不同的状态分割开来。把状态的判断逻辑转到表示不同状态的一系列类当中,可以把复杂的逻辑判断简化。当然,如果状态判断比较简单的时候没有必要用状态模式了,If else或者条件语句还是挺香的。

状态模式通过各种状态转移逻辑分布到状态的子类之间,减少相互间的依赖。
状态模式之后的代码如下:

typedef struct _Person{
   
    void (*action)(int)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值