
第4篇抽象工厂模式——产品族一键创建摘要当需要创建一系列相互关联的产品产品族时抽象工厂模式能保证风格统一、一键切换。本文详解其实现、优缺点并指出其适用场景。本文是《Java 23 种设计模式从踩坑到精通》工厂模式长文的扩充短文第4篇帮助你碎片化掌握核心知识点。你有没有写过这样的代码// 抽象工厂publicinterfaceGUIFactory{ButtoncreateButton();TextFieldcreateTextField();}// 具体工厂Windows风格publicclassWinFactoryimplementsGUIFactory{OverridepublicButtoncreateButton(){returnnewWinButton();}OverridepublicTextFieldcreateTextField(){returnnewWinTextField();}}// 具体工厂Mac风格publicclassMacFactoryimplementsGUIFactory{OverridepublicButtoncreateButton(){returnnewMacButton();}OverridepublicTextFieldcreateTextField(){returnnewMacTextField();}}工厂方法解决的是单一产品的创建问题。但现实中我们常需要创建一系列相互关联的产品——比如跨平台UI组件按钮和文本框必须风格统一全是Windows风格或全是Mac风格。抽象工厂模式正是为此而生提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。客户端只需切换工厂实例就能整体换肤GUIFactoryfactorynewWinFactory();// 切换这里Buttonbuttonfactory.createButton();// 一定是Win风格TextFieldtextFieldfactory.createTextField();// 一定是Win风格你的场景该不该用抽象工厂判断标准是 → 用抽象工厂否 → 用其他方式产品成族出现需要保证风格/协议一致✅❌需要整体切换产品族如换UI主题✅❌产品种类少且不成族❌简单工厂或工厂方法产品等级结构可能频繁新增❌考虑工厂方法一句话总结产品成族出现、需要整体切换 → 用抽象工厂保证成套一致。完整长文入口本文是工厂模式扩充系列的第4篇。如果你想一次性阅读完整内容含UML、三种工厂对比、框架源码、面试追问等请查看原长文 《Java 23 种设计模式从踩坑到精通 | 工厂模式》 系列导航上一篇第3篇工厂方法模式——把变化隔离到子类下一篇第5篇工厂方法 vs 抽象工厂——别再傻傻分不清返回 《工厂模式·扩充系列》目录返回《Java 23种设计模式从踩坑到精通》总目录