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

🔗 系列导航:

相关推荐
青山木27 分钟前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法
玛卡巴卡ldf31 分钟前
【AICoding】笔试提示词设计思路
java·算法·ai编程
珍珠先生41 分钟前
第10章 JDK 17 新特性:语法糖与新能力
java
吴声子夜歌2 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
新知图书2 小时前
第8章 多智能体协同
人工智能·设计模式·智能体
Haooog2 小时前
Agent 开发中的 Memory:State、短期记忆、长期记忆与 Memory Retrieval
java·agent·memory
砚底藏山河2 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
抠脚小弟2 小时前
Spring Cache 使用详解:从入门到实战
java·spring
ZGG0032 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
萧瑟余晖3 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言