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

🔗 系列导航:

相关推荐
正儿八经的少年1 小时前
Spring Boot
java·spring boot·后端
xiaogai_gai1 小时前
钉钉数据集成到金蝶云星空案例分享:传给钉钉后,回传金蝶字段
java·前端·钉钉
摇滚侠1 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
标致的钢铁侠1 小时前
c# 温故而知新: 线程篇(一)
java·jvm·c#
宠友信息1 小时前
资源权限与钱包流水在即时通讯源码后端架构中的设计
java·spring boot·redis·websocket·缓存
不知名的老吴1 小时前
浅谈:编程语言中的那些「锁」事(二)
java·开发语言
程序员小八7771 小时前
AOP 切面
java
地铁潜行者2 小时前
从单体思维到微服务:服务拆分与组件选型实践
java·后端
花生了什么事o2 小时前
线程池参数调优:corePoolSize 怎么设置
java·后端