第5篇工厂方法 vs 抽象工厂——别再傻傻分不清摘要工厂方法和抽象工厂到底有什么区别本文用对比表格和生活化比喻帮你彻底分清并给出选型口诀面试再也不怕被问倒。 系列导航上一篇第4篇抽象工厂模式——产品族一键创建下一篇第6篇框架源码中的工厂模式——Spring、MyBatis都在用返回 《工厂模式·扩充系列》目录 订阅本专栏不错过每一篇返回《Java 23种设计模式从踩坑到精通》总目录 订阅本专栏不错过每一篇本文是《Java 23 种设计模式从踩坑到精通》工厂模式长文的扩充短文第5篇帮助你碎片化掌握核心知识点。你有没有被这两个模式搞晕过工厂方法和抽象工厂面试最高频的混淆点。两者的核心区别只有一句话工厂方法解决“单一产品”的横向扩展抽象工厂解决“产品族”的纵向创建。对比维度工厂方法抽象工厂核心目标​创建一种产品创建一族相关的产品扩展维度​产品种类的横向扩展产品族的纵向切换开闭原则​完全符合在产品族维度符合在产品等级维度违反类数量​N个产品 → N个工厂N个产品族 → N个工厂典型例子​消息发送器Sms/Email跨平台UIWin/Mac风格举个例子帮你秒懂工厂方法你开了一家奶茶店只卖珍珠奶茶。后来想卖杨枝甘露就再开一家分店新工厂。每家店只卖一种饮品。抽象工厂你开了一家连锁餐饮集团旗下有“中式快餐”和“西式快餐”两个品牌。每个品牌都提供主食饮料甜点产品族。你想换个品牌直接切换整个供应链。你的场景该选哪个判断标准选工厂方法选抽象工厂产品是否成族出现否单个产品是多个产品一起是否需要整体切换不需要需要产品等级是否稳定可能变化相对稳定选型口诀一个产品横向扩展 → 工厂方法一族产品成套创建 → 抽象工厂。完整长文入口本文是工厂模式扩充系列的第5篇。如果你想一次性阅读完整内容含UML、三种工厂对比、框架源码、面试追问等请查看原长文 《Java 23 种设计模式从踩坑到精通 | 工厂模式》 系列导航上一篇第4篇抽象工厂模式——产品族一键创建下一篇第6篇框架源码中的工厂模式——Spring、MyBatis都在用返回 《工厂模式·扩充系列》目录 订阅本专栏不错过每一篇返回《Java 23种设计模式从踩坑到精通》总目录 订阅本专栏不错过每一篇实战配套本文的电子面单编排器设计在《电商多平台电子面单对接实战》系列中有完整落地代码多平台统一架构设计模板方法的组合与继承抉择