生活中的设计模式之状态(State)模式

本文通过刘向《说苑·建本》中的典故,探讨了不同人生阶段的学习态度,并将其抽象为软件设计中的状态模式,展示了如何使用该模式来模拟人生不同阶段的读书行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引子

“臣闻之,少而好学,如日出之阳;壮而好学,如日中之光;老而好学,如炳烛之明。炳烛之明,孰与昧行乎?”

                                                                                                                                                       --- 刘向《说苑·建本》

师旷将读书分为三个阶段,少年,壮年和老年。这三个阶段也代表了人生的三个状态。

我们可以将上段文字,用状态模式的思想来实现出来。

人生刚开始为少年(人生的状态设置为少年),这个时候读书(调用人生读书方法,就如日出之阳)

逝者如斯夫,人生到了壮年(人生的状态设置为壮年),这个时候读书就如日中之光

白发渔樵江渚上,人生迟暮(人生的状态设置为老年),这个时候读书就如炳烛之明了。

分析

首先人生的三个状态,那么需要有人生类,人生类包含状态切换成员函数及读书成员函数。

要有不同的状态类,每个状态类都有各自的读书成员函数,以及设置人生为当前状态的方法。

简单代码实现

人生类:

状态类:

场景类:

输出:

重要:在每个状态的读书成员方法中,都注释掉了人生状态切换的调用,是因为在场景类中单独的设置人生状态可能更加直观。

但是,状态模式下,每个状态的处理函数中,都有让主类有切换到其它状态的可能,这很重要。

比如,笔者最近碰到的飞行系统,根据每年的飞行里程分为普通会员,银卡会员,金卡会员。

当普通会员的飞行里程达到了银卡或者金卡的标准后,可以自动切换为银卡或者金卡会员

此时虽然是同样的卡片,但是却进行了不同的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值