第8篇:六大设计原则在工厂模式中的体现

第8篇:六大设计原则在工厂模式中的体现

摘要:工厂模式如何体现SOLID六大设计原则?本文逐一剖析,并用总结对比表帮你一眼看清三种工厂的差异与选型,完成工厂模式的全面学习。

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


你有没有想过,工厂模式为什么能如此优雅地解决对象创建问题?因为它深刻践行了SOLID六大设计原则。看懂这些原则,才算真正理解工厂模式。

设计原则 在工厂模式中的体现
单一职责原则(SRP) 每个具体工厂只负责创建一种产品,职责内聚
开闭原则(OCP) ​ 工厂方法新增产品只需加新工厂类,无需修改现有代码
里氏替换原则(LSP) 客户端使用抽象产品类型,具体产品可任意替换
依赖倒置原则(DIP) 客户端依赖抽象工厂和抽象产品接口,而非具体实现类
**接口隔离原则(ISP)**​ 抽象工厂按产品族维度拆分接口,避免"胖接口"
迪米特法则(LoD) 客户端只需知道工厂和产品接口,无需了解内部创建细节

举个具体的例子 :在工厂方法模式中,客户端代码只依赖 SenderFactory接口和 Sender接口,这就是依赖倒置 。新增 WechatSender时,只需新增 WechatSenderFactory,无需改动任何现有代码,这就是开闭原则 。每个工厂只干一件事,这就是单一职责。


你的场景该不该深究设计原则?
判断标准 是 → 深入理解 否 → 先用好模式
想写出高维护性的代码 ✅ ❌
准备架构师级别的面试 ✅ ❌
目前只求快速完成任务 ❌ 先会用模式

总结对比一览

对比维度 简单工厂 工厂方法 抽象工厂
GoF收录​ 否 是 是
工厂数量​ 1个 N个(每产品一工厂) N个(每产品族一工厂)
产品数量​ 多种 一种(每工厂) 一族(多产品)
开闭原则​ 违反 符合 部分符合
类复杂度​ ★☆☆☆ ★★★☆ ★★★★
推荐指数​ ★★★☆ ★★★★★ ★★★★
典型应用​ Calendar.getInstance() Spring FactoryBean MyBatis SqlSessionFactory

建议:日常开发中,优先考虑简单工厂(够用即止);产品种类多且频繁扩展时升级为工厂方法;系统存在产品族概念时(如多端UI、多数据库)果断使用抽象工厂。


📖 完整长文入口:本文是工厂模式扩充系列的最后一篇。如果你想一次性阅读完整内容(含UML、三种工厂对比、框架源码、面试追问等),请查看原长文:

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

🔗 系列导航:

相关推荐
博风14 小时前
9、设计模式应用举例:责任链模式:计算阶乘
设计模式·责任链模式
wangchunyu11415 小时前
JDK8新特性实战(Lambda、Stream、Optional)
java·开发语言
JosieBook15 小时前
【多线程】两台机器同时抢一个字典:一次并发 Bug 的排查
java·网络·bug
牛战士coding15 小时前
LLM 选错工具怎么办?提示词之外还需要确定性规则兜底
java·人工智能
今天的砖头有点烫手啊15 小时前
Java 序列化到底怎么选?从 Serializable 到 Protobuf 的演进与选型
java·json
Wang's Blog15 小时前
Java 项目实战: 交友项目 - 登录发送验证码的测试验证与经验复盘
java·开发语言·交友
夕除15 小时前
redis--主从还是集群,内存
java·spring·mybatis
百数平台15 小时前
低代码安全技术实践:表单 / 流程 / 报表三级权限体系设计解析
java·大数据·数据库
白露与泡影15 小时前
Spring Boot 实现验证码:Hutool-captcha、AJ-Captcha、EasyCaptcha 到底怎么选?
java·spring boot·后端
马优晨16 小时前
Java中的dto是什么
java·开发语言·java中的dto是什么·java的dto是什么·dto在java中是什么