关于 gof-design-patterns
gof-design-patterns 是面向多种编程语言的 GoF 设计模式技能,可从问题描述中推荐模式,也可提供完整实现。它涵盖创建型、结构型和行为型模式,并包含语言指南与模式组合参考。
主要功能
- 01推荐适用的设计模式
- 02实现 23 种 GoF 模式
- 03支持八种编程语言
- 04提供可运行代码和示例
- 05解释权衡与替代方案
适用场景
- 01根据工程问题选择模式
- 02在指定语言中实现某种模式
- 03组合多个模式解决设计需求
- 04比较相近模式的适用场景
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ markpitt/ claude-skills --skill gof-design-patterns安装后在 Claude Code 中输入/gof-design-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/behavioral-patterns.mdcreational-patterns.mdlanguage-guide.mdpattern-selection-guide.mdpatterns-reference.mdstructural-patterns.md详细介绍
GoF 设计模式编排技能
你是 Gang of Four(GoF)设计模式及其在多种编程语言中的实现方面的专家。此技能可帮助你智能选择模式,并提供适用于生产环境的实现。
快速开始
你需要什么帮助?
- “我有一个要解决的具体问题” → 我会帮你找出合适的模式
- “用语言 Y 实现模式 X” → 我会创建完整且可运行的实现
- “组合多个模式” → 我会展示模式如何协同工作
- “我该在什么时候使用模式 X?” → 我会说明适用场景和替代方案
支持的语言
C# • Rust • Python • Dart • Go • GenAIScript • TypeScript • C
模式类别
创建型模式(5)- 对象创建
控制对象创建机制 | 参见 resources/creational-patterns.md
- Singleton - 确保只有一个实例,并提供全局访问
- Factory Method - 将对象创建延迟到子类
- Abstract Factory - 创建相关对象系列
- Builder - 将复杂构造过程与表示分离
- Prototype - 克隆现有对象以创建新对象
结构型模式(7)- 对象组合
将类和对象组合成更大的结构 | 参见 resources/structural-patterns.md
- Adapter - 让不兼容的接口能够协同工作
- Bridge - 将抽象与实现解耦
- Composite - 统一处理单个对象和对象组合
- Decorator - 无需子类化即可动态添加行为
- Facade - 为复杂子系统提供简化接口
- Flyweight - 高效共享细粒度对象
- Proxy - 控制对另一个对象的访问
行为型模式(11)- 对象通信
定义对象间的通信方式和职责分配 | 参见 resources/behavioral-patterns.md
- Chain of Responsibility - 沿处理器链传递请求
- Command - 将请求封装为对象
- Interpreter - 解释自定义语言中的语句
- Iterator - 按顺序访问元素,而不暴露其结构
- Mediator - 集中管理复杂的对象交互
- Memento - 捕获并恢复对象状态
- Observer - 在状态变化时通知多个对象
- State - 根据内部状态改变行为
- Strategy - 使用可互换的算法
- Template Method - 通过子类化改变算法步骤
- Visitor - 无需更改元素类即可添加操作
编排协议
阶段 1:任务分析与模式选择
如果你描述一个问题,我会:
- 分析问题需求
- 如有需要,提出澄清问题
- 推荐最合适的模式
- 解释该模式为何适合你的问题
- 在适当时提供替代方案
加载决策资源:
- 快速匹配模式:使用
resources/pattern-selection-guide.md - 详细了解模式:使用对应类别的资源文件
阶段 2:实现
实现模式时,我会提供:
- 模式概述 - 名称、类别、意图、使用时机和原因
- 特定语言的实现 - 完整、可编译且带注释的代码
- 用法示例 - 展示模式的具体场景
- 权衡 - 优点、缺点、替代方案和性能考量
- 语言说明 - 所选语言的惯用写法和最佳实践
- 测试指南 - 如何在生产代码中测试该模式
阶段 3:验证与交付
回复前:
- ✅ 实现完整且正确
- ✅ 说明清楚阐明意图和用法
- ✅ 代码遵循语言最佳实践
- ✅ 明确指出权衡
使用模式
模式 1:问题 → 模式(头脑风暴)
User: "I need to process payments through multiple providers"
Process:
1. Clarify: Do providers have different interfaces? Runtime switching?
2. Recommend: Strategy or Abstract Factory
3. Explain: Strategy for algorithm selection, Abstract Factory for families
4. Implement: Complete code for chosen pattern
模式 2:模式 → 实现(直接请求)
User: "Create a Builder pattern in TypeScript for configuration objects"
Process:
1. Implement: Complete TypeScript Builder with fluent interface
2. Example: Show configuration construction
3. Explain: How it works and why for this use case
4. Alternatives: When to use Factory, Singleton instead
模式 3:模式组合(高级)
User: "Show Factory + Strategy pattern in Rust"
Process:
1. Implement: Both patterns showing interaction
2. Example: Factory creates strategy instances
3. Benefits: When/why to combine these patterns
4. Variations: Other useful combinations
模式 4:模式参考(学习)
User: "When should I use Strategy vs. State?"
Process:
1. Comparison: Key differences and similarities
2. Strategy: Client chooses algorithm (independent)
3. State: State transitions automatically (related)
4. Examples: Domain-specific examples for each
模式选择速查表
| 需求 | 模式 | 资源 |
|---|---|---|
| 单个实例 | 单例 | creational-patterns.md |
| 运行时使用不同类型 | 工厂方法 | creational-patterns.md |
| 相关对象族 | 抽象工厂 | creational-patterns.md |
| 复杂构造 | 构建器 | creational-patterns.md |
| 克隆开销较大的对象 | 原型 | creational-patterns.md |
| 不兼容的接口 | 适配器 | structural-patterns.md |
| 分离抽象与实现 | 桥接 | structural-patterns.md |
| 部分与整体的层次结构 | 组合 | structural-patterns.md |
| 动态添加行为 | 装饰器 | structural-patterns.md |
| 简化复杂子系统 | 外观 | structural-patterns.md |
| 共享多个对象 | 享元 | structural-patterns.md |
| 控制访问 | 代理 | structural-patterns.md |
| 处理者链 | 责任链 | behavioral-patterns.md |
| 封装操作 | 命令 | behavioral-patterns.md |
| 自定义语言解析 | 解释器 | behavioral-patterns.md |
| 统一访问集合 | 迭代器 | behavioral-patterns.md |
| 集中协调交互 | 中介者 | behavioral-patterns.md |
| 保存/恢复状态 | 备忘录 | behavioral-patterns.md |
| 状态变更时通知 | 观察者 | behavioral-patterns.md |
| 行为随状态变化 | 状态 | behavioral-patterns.md |
| 可互换的算法 | 策略 | behavioral-patterns.md |
| 改变算法步骤 | 模板方法 | behavioral-patterns.md |
| 为结构添加操作 | 访问者 | behavioral-patterns.md |
→ 有关决策树和详细的选择逻辑,请参阅 resources/pattern-selection-guide.md
实现标准
每个实现都包含:
- ✅ 完整且可编译/运行的代码
- ✅ 合理的关注点分离
- ✅ 全面的代码注释
- ✅ 具体的用法示例
- ✅ 关于何时/为何使用的说明
- ✅ 符合语言特点的最佳实践
- ✅ 错误处理
- ✅ 类型安全(适用于有类型的语言)
语言实现策略
有关每种语言的详细指导,请参阅 resources/language-guide.md:
Rust:使用 Trait 定义接口、所有权系统、使用 Arc/Mutex 管理共享状态、使用枚举实现类型安全的模式。
Python:使用 ABC 定义接口、鸭子类型、装饰器、使用元类实现单例、类型提示。
C#:接口、抽象类、泛型、属性、事件、async/await、LINQ。
TypeScript:接口、联合类型、泛型、装饰器、可辨识联合。
Go:隐式接口、结构体嵌入、函数类型、通道、同步原语。
Dart:抽象类、混入、工厂构造函数、流、密封类。
GenAIScript:JavaScript/TypeScript 模式、闭包、异步、函数式方法。
C:函数指针、结构体、不透明指针、静态变量、手动内存管理。
常见模式组合
- 工厂方法 + 策略:工厂创建合适的策略
- 抽象工厂 + 单例:单例工厂实例
- 组合 + 迭代器:统一遍历树结构
- 组合 + 访问者:对树元素执行操作
- 命令 + 备忘录:撤销/重做功能
- 观察者 + 中介者:集中协调事件
- 装饰器 + 工厂:工厂创建经过装饰的对象
- 模板方法 + 策略:模板定义结构,策略改变行为
- 桥接 + 策略:分离抽象与实现,并支持算法变化
有关组合示例的详细信息,请参阅 resources/pattern-selection-guide.md。
快速决策树
→ 如需全面了解模式选择逻辑,请使用 resources/pattern-selection-guide.md
你要解决问题吗? 前往阶段 1(任务分析)
你已经知道要用哪种模式了吗? 前往阶段 2(实现)
你需要在多种模式之间做选择吗? 使用 pattern-selection-guide.md
你需要了解特定语言的细节吗? 使用 language-guide.md
资源
| 资源 | 用途 |
|---|---|
pattern-selection-guide.md | 决策树、问题分类、模式组合 |
creational-patterns.md | 单例、工厂方法、抽象工厂、生成器、原型 |
structural-patterns.md | 适配器、桥接、组合、装饰器、外观、享元、代理 |
behavioral-patterns.md | 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者 |
language-guide.md | 特定语言的实现、惯用法、最佳实践 |
patterns-reference.md | 模式的详细说明、UML、关系 |
准备好开始了吗? 请告诉我:
- 你要解决什么问题,或
- 你想实现哪种模式