microwind/ai-skills/abstract-factory-pattern
Claude Code and agent skill by microwind/ai-skills
- community
Checking that the SKILL.md file is still in the repository.
为一族相关对象的创建提供一致的接口,无需指定其具体类。
Install
npx vskill@latest install microwind/ai-skills/abstract-factory-patternSKILL.md
抽象工厂模式 (Abstract Factory Pattern)
核心概念
Abstract Factory是一种创建型设计模式,用于创建一族相关对象的集合,而不是单个对象。它在工厂方法之上进行了抽象,提供接口定义一系列产品族的创建。
核心原则:
- 隐藏产品族的创建复杂性
- 保证产品族的一致性
- 支持产品族的灵活切换
- 将产品族的创建逻辑集中管理
关键术语:
- 产品族 (Product Family) - 相关产品的集合(如 Windows UI族包含Button、Window、TextBox)
- 抽象工厂 (Abstract Factory) - 定义创建产品族接口
- 具体工厂 (Concrete Factory) - 实现具体产品族创建
何时使用 - 触发模式
始终使用:
- 系统需要支持多个相关对象的集合(产品族)
- 需要在多个产品族之间灵活切换
- 希望保证一个产品族内产品的一致性
- 产品族的创建逻辑复杂/分散在多处
触发短语:
- "如何创建一组相关/相通的对象?"
- "需要支持多个主题/风格/变体,且每个涉及多个对象"
- "如何保证选定的产品都来自同一个族?"
- "产品族涉及多个维度的变化"
典型场景:
| 场景 | 产品族 | 工厂 | |
|---|---|---|---|
| UI 组件系统 | {Windows Button, Window, Dialog} vs {Mac Button, Window, Dialog} | WindowsUIFactory vs MacUIFactory | |
| 数据库方言 | {MySQL SQL, Optimizer, Connection} vs {PostgreSQL ...} | MySQLDialectFactory vs PostgresDialectFactory | |
| 游戏渲染引擎 | {DirectX Texture, Shader, Buffer} vs {OpenGL ...} | DirectXFactory vs OpenGLFactory | |
| 操作系统适配 | {Windows FileSystem, Registry, Process} vs {Linux ...} | WindowsAdapterFactory vs LinuxAdapterFactory |
4个实现方法详解
方法1: 简单抽象工厂 (Simple Abstract Factory)
最直接的实现方式 - 为产品族定义接口,具体工厂实现。
优点: 结构清晰,易于理解和维护 缺点: 添加新产品族需要创建多个新类
方法2: 配置驱动型工厂 (Configuration-Driven Factory)
使用配置或反射动态决定使用哪个产品族,减少硬编码。
优点: 通过配置切换产品族,无需重新编译 缺点: 运行时反射开销,异常处理复杂
方法3: 单例结合的工厂 (Singleton-Combined Factory)
确保每个产品族的工厂只有一个实例(资源共享)。
优点: 资源共享,单一全局访问点 缺点: 全局性可能导致测试困难
方法4: 动态注册工厂 (Dynamic Registry Factory)
允许在运行时注册和注销产品族,支持插件化架构。
优点: 高度灵活,支持运行时插件 缺点: 复杂度高,需要仔细管理注册表
常见问题与解决方案
❌ 问题1: 产品族的管理和扩展
症状: 添加新的产品族时,需要修改多个地方;添加新的产品类型时,需要修改所有工厂类。
根本原因: 产品族边界不清晰,扩展点不明确。
解决方案:
❌ 问题2: 产品族一致性保证
症状: 某个工厂返回的产品来自不同的族(混杂),导致风格不一致。
根本原因: 工厂实现不规范,产品隔离不足。
解决方案:
❌ 问题3: 产品族扩展成本
症状: 添加新的产品类型时,需要修改所有工厂类;代码改动范围大,容易引入Bug。
根本原因: 产品族的接口设计不够灵活。
解决方案:
❌ 问题4: 产品序列化和反序列化
症状: 需要保存和恢复产品状态,但工厂创建的对象难以序列化。
根本原因: 序列化信息不完整或工厂引用无法恢复。
解决方案:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdesign-patterns/abstract-factory-pattern/SKILL.md
Popularity
- Repository stars
- 51
- Repository forks
- 13
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/microwind/ai-skills/abstract-factory-pattern)