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

🔗 系列导航:

相关推荐
Ai拆代码的曹操1 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
动恰客流统计2 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
Ivanqhz2 小时前
Rust &‘static str浅析
java·前端·javascript·rust
weixin_419658315 小时前
Docker 搭建 Jenkins 服务
java·docker·jenkins
captain3766 小时前
多线程线程安全问题
java·java-ee
CoderYanger6 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
灵极海6 小时前
LangChain4j RAG 实战完整指南:从入门到踩坑
java·langchain
yaoxin5211236 小时前
476. Java 反射 - 调用方法
java·开发语言
Ivanqhz7 小时前
Rust Lazy浅析
java·javascript·rust
choumin7 小时前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式