第7篇:策略模式 vs 状态模式——别再傻傻分不清

第7篇:策略模式 vs 状态模式——别再傻傻分不清

摘要:策略模式和状态模式是面试中极容易混淆的一对。本文用对比表格和记忆口诀帮你彻底分清。
🔗 系列导航:


本文是《Java 23 种设计模式:从踩坑到精通》策略模式长文的扩充短文第7篇,帮助你碎片化掌握核心知识点。

你有没有被这两个模式搞晕过?策略模式和状态模式,行为型模式中的“双胞胎”。两者的核心区别在于:策略由客户端决定切换,状态由状态类自己决定转换。

对比维度策略模式状态模式
目的替换算法根据内部状态自动改变行为
谁决定切换客户端显式选择策略状态类自己决定何时切换到另一个状态
关注点算法的替换与组合状态之间的流转和转换
上下文感知策略通常不知道上下文的存在状态知道上下文的存在,并可能调用上下文方法
典型应用Comparator、支付方式、折扣策略订单状态机、线程状态、工单流转

举个例子帮你秒懂:

  • 策略模式:你去餐厅吃饭,服务员拿来菜单(策略列表),你主动选择今天吃什么(客户端决定)。下次来你可以选不同的菜。

  • 状态模式:你点了一份牛排,厨房会根据牛排的“状态”(生、半熟、全熟)自动决定下一步操作(翻面、装盘、上菜)。状态自己决定行为。


你的场景该选哪个?
判断标准选策略模式选状态模式
算法/行为由外部主动选择
行为随内部状态自动变化
需要运行时动态替换
状态之间有明确的转移规则

记忆口诀:策略主动选,状态被动变。


📖 完整长文入口:本文是策略模式扩充系列的第7篇。如果你想一次性阅读完整内容(含UML、完整代码、框架应用、面试追问等),请查看原长文:

👉 《Java 23 种设计模式:从踩坑到精通 | 策略模式》

🔗 系列导航:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值