第4篇:Lambda 简化策略模式(Java 8+)

第4篇:Lambda 简化策略模式(Java 8+)

摘要:当策略逻辑简单时,不必专门写一个策略类,Lambda 表达式可以直接替代。本文展示如何用函数式编程简化策略模式,减少类数量。

🔗 系列导航:


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

如果策略接口只有一个抽象方法,那它就是函数式接口,可以用 Lambda 表达式直接替代具体策略类,减少类数量。

java 复制代码
Order order = new Order(500);

// 满减策略(Lambda)
order.setPromotionStrategy(o -> {
    double discount = Math.floor(o.getTotal() / 200) * 50;
    return o.getTotal() - discount;
});

// 打折策略(Lambda)
order.setPromotionStrategy(o -> o.getTotal() * 0.8);

System.out.println(order.checkout());

优点:

  • 无需创建单独的类文件,代码更紧凑。

  • 适合逻辑简单的策略,如单行计算。

  • 策略逻辑直接写在调用处,便于理解。

注意事项:

  • 如果策略逻辑复杂(超过3行),建议仍提取为独立类,保持可读性。

  • Lambda 无法在多个地方复用,如果需要复用,还是应该用命名类。


你的场景该不该用Lambda简化?
判断标准 是 → 用Lambda 否 → 用独立类
策略逻辑简单(≤3行) ✅ ❌
策略只在当前一处使用 ✅ ❌
策略逻辑复杂或需要复用 ❌ ✅

一句话总结:Lambda 让策略模式更简洁,但不要滥用。复杂逻辑还是用独立类更清晰。


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

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

🔗 系列导航:

相关推荐
EatFan7 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
Maiko Star8 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
现任明教教主~10 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
一条破秋裤10 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
布吉岛的石头10 小时前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
摇滚侠11 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
二十雨辰12 小时前
[学成在线]-01项目背景
java
弈栈录13 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
长按助力退休13 小时前
设计模式实战,这 5 个最常用
设计模式
落魄实习生13 小时前
Agent Scope Java 2.x 系列【2】 ReActAgent
java·开发语言