java设计模式其实很简单!11种模式对比学习,新手也能看懂
·
java设计模式其实很简单!11种模式对比学习,新手也能看懂
🎯 为什么需要这个项目?
痛点:很多设计模式教程过于理论化,看完还是不知道什么时候该用哪个模式。
本项目通过简洁的代码和贴近生活的场景,帮你快速理解不同设计模式的核心区别和适用场景。
📚 项目特点
✅ 代码极简 - 每个模式3-5个类,聚焦核心逻辑
✅ 场景直观 - 电商、支付、咖啡等日常场景,一看就懂
✅ 对比清晰 - 相似模式放在一起,差异一目了然
✅ 测试完整 - 24个单元测试,运行即验证
🔍 11种设计模式速览
一、创建型模式 - “如何优雅地创建对象”
1️⃣ 单例模式 vs 工厂模式
| 模式 | 一句话理解 | 应用场景 | 示例 |
|---|---|---|---|
| 单例 | 全局只要一个实例 | 订单管理器、配置中心 | OrderManager.getInstance() |
| 工厂 | 根据条件创建不同类型 | 支付宝/微信支付选择 | PaymentFactory.create("alipay") |
核心区别:
- 单例:控制数量(只有一个)
- 工厂:控制类型(创建哪一种)
2️⃣ 抽象工厂 vs 建造者
| 模式 | 一句话理解 | 应用场景 | 示例 |
|---|---|---|---|
| 抽象工厂 | 创建一系列相关产品 | Windows/Mac整套UI组件 | WindowsFactory.createButton() + createMenu() |
| 建造者 | 分步骤构建复杂对象 | 电脑选配CPU/内存/硬盘 | new Builder().cpu("i7").ram("16G").build() |
核心区别:
- 抽象工厂:产品族(一套相关的)
- 建造者:组装过程(一步步搭建)
3️⃣ 原型模式
| 模式 | 一句话理解 | 应用场景 | 示例 |
|---|---|---|---|
| 原型 | 复制现有对象 | 文档模板克隆 | doc.clone() |
何时使用:创建相似对象时,克隆比new更高效
二、结构型模式 - “如何组合类和对象”
4️⃣ 适配器模式 vs 装饰器模式
这是最容易混淆的两个模式!
| 模式 | 一句话理解 | 目的 | 示例 |
|---|---|---|---|
| 适配器 | 转换接口,让不兼容的能一起工作 | 兼容性 | 旧版支付系统 → 新版接口 |
| 装饰器 | 动态添加功能,不修改原类 | 扩展性 | 咖啡 + 牛奶 + 糖 |
形象比喻:
- 适配器 = 电源转接头(美标→国标)
- 装饰器 = 手机壳(可以叠加多层)
代码对比:
// 适配器:改变接口
ModernPayment adapter = new PaymentAdapter(new LegacyPayment());
adapter.payNewWay(); // 调用新接口,内部调用旧方法
// 装饰器:增强功能
Coffee coffee = new MilkDecorator(new SugarDecorator(new SimpleCoffee()));
coffee.cost(); // 价格 = 咖啡 + 糖 + 牛奶
三、行为型模式 - “对象之间如何通信”
5️⃣ 观察者模式 vs 策略模式
| 模式 | 一句话理解 | 核心思想 | 示例 |
|---|---|---|---|
| 观察者 | 一对多通知,状态变化自动推送 | 发布-订阅 | 库存变化 → 通知所有关注用户 |
| 策略 | 算法可替换,运行时切换 | 封装变化 | 普通会员9折 / VIP会员8折 |
核心区别:
- 观察者:被动接收通知
- 策略:主动选择算法
6️⃣ 命令模式 vs 模板方法模式
| 模式 | 一句话理解 | 核心思想 | 示例 |
|---|---|---|---|
| 命令 | 请求封装成对象,支持撤销 | 解耦调用者和执行者 | 遥控器按钮 → 开灯/关灯 |
| 模板方法 | 固定流程,细节由子类实现 | 复用算法骨架 | 数据处理:读取→解析→保存 |
形象比喻:
- 命令 = 菜单点餐(服务员记录订单,厨师执行)
- 模板方法 = 做菜流程(洗菜→切菜→炒菜,具体食材不同)
📊 模式选择决策图
遇到以下场景时,考虑使用对应模式:
需要创建对象?
├─ 只想要一个实例 → 单例模式
├─ 根据条件选类型 → 工厂模式
├─ 创建产品族 → 抽象工厂
├─ 分步构建 → 建造者
└─ 快速复制 → 原型模式
需要组合功能?
├─ 接口不兼容 → 适配器模式
└─ 动态加功能 → 装饰器模式
需要对象通信?
├─ 状态变化通知 → 观察者模式
├─ 算法可切换 → 策略模式
├─ 请求队列化 → 命令模式
└─ 流程标准化 → 模板方法模式
🚀 快速开始
# 克隆项目
git clone https://gitee.com/jiucenglou/java-design-patterns-learning.git
# 运行测试,看效果
cd java-design-patterns-learning
mvn test
你会看到:
✅ Tests run: 24, Failures: 0, Errors: 0
💡 学习建议
最佳学习路径:
- 先看测试代码(5分钟)- 了解模式怎么用
- 再看核心类(10分钟)- 理解UML结构
- 动手改代码(15分钟)- 添加新实现或调整逻辑
- 对比总结(5分钟)- 思考与相似模式的区别
重点对比组:
🔥 必掌握对比:
- 适配器 vs 装饰器(结构型双子星)
- 观察者 vs 策略(行为型易混对)
- 工厂 vs 抽象工厂(创建型进阶)
🔗 获取项目
🌟 Gitee地址: https://gitee.com/jiucenglou/java-design-patterns-learning
欢迎 Star ⭐,你的支持是我更新更多模式的动力!
📝 后续计划
持续补充剩余12种模式,保持简洁易懂的风格:
- 代理模式、责任链模式、状态模式
- 访问者模式、中介者模式、迭代器模式等
💬 互动交流
你觉得哪两个模式最容易混淆? 欢迎在评论区讨论!
如果文章帮到你,别忘了点赞收藏~
标签: #Java #设计模式 #实战入门 #代码简洁 #对比学习 #开源项目
更多推荐
所有评论(0)