第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 种设计模式:从踩坑到精通 | 工厂模式》

🔗 系列导航:

相关推荐
小羊没烦恼!4 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里4 天前
java中的继承和多态的区别
java
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕4 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖4 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时4 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang4 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi4 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号4 天前
java函数式编程--入门基础
java·编程·函数式编程