第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 分钟前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
新知图书13 分钟前
第8章 多智能体协同
人工智能·设计模式·智能体
Haooog17 分钟前
Agent 开发中的 Memory:State、短期记忆、长期记忆与 Memory Retrieval
java·agent·memory
砚底藏山河24 分钟前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
抠脚小弟39 分钟前
Spring Cache 使用详解:从入门到实战
java·spring
ZGG0031 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
萧瑟余晖1 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言
张文是假的啊1 小时前
Java | record | Controller逻辑
java·开发语言
勿忘,瞬间1 小时前
Mybatis高阶
java·数据库·mybatis
嘻哈baby3 小时前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm