干掉if-else,多点套路,少点弯路!
你也许已经看了无数使用 if-else 语句的教程,你可能也读过不少使用 if-else 作为事实上的分支技术的编程书籍。

图片来自 Pexels
它可能是也是你日常默认的编码模式。但是,让我们从今天起结束这种方法,用状态对象代替 If-else。
请注意,如果你正在编写的代码需要根据当前状态改变其实现的类,你需要改用这种方法。如果你的代码不是处理对象的状态变化,你需要选择其他方法。
即使你已经听说过状态模式,你可能也想了解如何在生产代码中实现。
对于以前了解不多的人,下面有一段非常简单的介绍。
对 if-else 增加任何新的条件,都会增加复杂性。应用状态模式(state pattern),你只需使用专门的状态对象,代替 if-else 语句来改变一个对象的行为。

警告:PTSD 触发器。另外,希望你能发现里面的逻辑错误(除了代码整体一团糟)。
你以前肯定写过更复杂的分支。我几年前确实写过。
上面的分支逻辑虽然不是很复杂,但如果再添加新的条件,这个逻辑会更加混乱。
另外,如果你认为创建新的类,而不是简单地使用分支语句听起来很烦人,那就可以继续看下面的实际代码,它简洁而优雅。
更妙的是,它会让你的代码库变得更 SOLID,除了 "D" 部分。
"好了,我相信 if-else 是邪恶的,现在请告诉我如何避免混乱的分支代码"!
我们将看看我是如何在生产代码中替换 if-else 分支的。这是一个假想的例子,但方法和我在大型客户的代码库中使用的是一样的。
让我们创建一个非常简单的 Booking 类,它有几个状态。它也会有两个公共方法:Accept() 和 Cancel()。

将分支逻辑从代码中重构出来,可以分为三步:
创建一个抽象的基本状态类。
将每个状态作为一个独立的类来实现,继承于基本状态。
让 Booking 类有一个私有的或内部的方法,把状态基类作为参数。
演示时间
首先,我们需要一个用于继承所有状态的基础状态类。

其次,我们要为我们要表示的每一个状态单独做一个类。

最后,再看看 Booking 类本身:

作者:Nicklas Millard
编辑:陶家龙
出处:转载自公众号高可用架构(ID:ArchNotes)

精彩文章推荐:
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








51CTO技术栈
