第4篇:抽象工厂模式——产品族一键创建

第4篇:抽象工厂模式------产品族一键创建

摘要:当需要创建一系列相互关联的产品(产品族)时,抽象工厂模式能保证风格统一、一键切换。本文详解其实现、优缺点,并指出其适用场景。

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


你有没有写过这样的代码?

java 复制代码
// 抽象工厂
public interface GUIFactory {
    Button createButton();
    TextField createTextField();
}

// 具体工厂:Windows风格
public class WinFactory implements GUIFactory {
    @Override
    public Button createButton() { return new WinButton(); }
    @Override
    public TextField createTextField() { return new WinTextField(); }
}

// 具体工厂:Mac风格
public class MacFactory implements GUIFactory {
    @Override
    public Button createButton() { return new MacButton(); }
    @Override
    public TextField createTextField() { return new MacTextField(); }
}

工厂方法解决的是单一产品 的创建问题。但现实中,我们常需要创建一系列相互关联的产品------比如跨平台UI组件,按钮和文本框必须风格统一(全是Windows风格或全是Mac风格)。

抽象工厂模式正是为此而生:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

客户端只需切换工厂实例,就能整体换肤:

java 复制代码
GUIFactory factory = new WinFactory();  // 切换这里
Button button = factory.createButton(); // 一定是Win风格
TextField textField = factory.createTextField(); // 一定是Win风格

你的场景该不该用抽象工厂?
判断标准 是 → 用抽象工厂 否 → 用其他方式
产品成族出现,需要保证风格/协议一致 ✅ ❌
需要整体切换产品族(如换UI主题) ✅ ❌
产品种类少且不成族 ❌ 简单工厂或工厂方法
产品等级结构可能频繁新增 ❌ 考虑工厂方法

一句话总结:产品成族出现、需要整体切换 → 用抽象工厂,保证成套一致。


📖 完整长文入口:本文是工厂模式扩充系列的第4篇。如果你想一次性阅读完整内容(含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·编程·函数式编程