mcpField
G
gof-patterns

gof-patterns

github.com/grndlvl开发1764 次安装38 周前更新
代码仓库

关于 gof-patterns

gof-patterns 是 Gang of Four 设计模式的语言无关参考技能,面向需要选择、理解或实现模式的软件开发者。它通过分类表、适用场景和伪代码帮助将模式思路转化为不同语言的实现。

主要功能

  1. 01涵盖创建型、结构型和行为型模式
  2. 02提供模式选择参考
  3. 03说明各模式的适用场景
  4. 04提供可移植到多种语言的伪代码

适用场景

  1. 01为设计问题挑选合适模式
  2. 02重构时评估结构改进方案
  3. 03将模式示例转换为项目使用的语言

MCP 相关

输入未说明该技能与 MCP 的关系。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/grndlvl/software-patterns --skill gof-patterns

安装后在 Claude Code 中输入/gof-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

pattern-selection.md
gof-behavioral/
chain-of-responsibility.md
command.md
interpreter.md
iterator.md
mediator.md
memento.md
observer.md
state.md
strategy.md
template-method.md
visitor.md
gof-creational/
abstract-factory.md
builder.md
factory-method.md
prototype.md
singleton.md
gof-structural/
adapter.md
bridge.md
composite.md
decorator.md
facade.md
flyweight.md
proxy.md

详细介绍

GoF 设计模式参考

Gang of Four 设计模式的全面参考。本技能提供与语言无关的指导,并附有可转换为任何编程语言的伪代码示例。

本技能的触发条件

在以下情况下,本技能会自动触发:

  • 询问或需要实现设计模式
  • 需要为设计问题选择模式
  • 重构代码并考虑结构改进
  • 讨论架构、解耦或可扩展性
  • 提及特定模式:工厂、单例、观察者、装饰器等

模式速查

创建型模式(对象创建)
模式意图适用场景
抽象工厂创建相关对象的系列需要平台/主题无关性
生成器逐步构建复杂对象对象有许多可选部分
工厂方法让子类决定实例化哪个类事先不知道具体类型
原型克隆现有对象创建对象的开销很大
单例确保只有一个实例需要且仅需要一个共享实例
结构型模式(组合)
模式意图适用场景
适配器将接口转换为预期的接口集成不兼容的接口
桥接将抽象与实现分离需要让两者独立变化
组合以统一方式处理单个对象和对象组有树形结构
装饰器动态添加职责需要灵活扩展
外观为子系统提供简化接口复杂子系统需要简单的 API
享元高效共享公共状态需要许多相似对象
代理控制对对象的访问需要延迟加载、访问控制或日志记录
行为型模式(通信)
模式意图适用场景
责任链沿处理器链传递请求有多个处理器,但不确定由哪个处理
命令将请求封装为对象需要撤销、排队或记录操作
解释器定义语法并解释句子有简单语言需要解析
迭代器不暴露内部结构地按顺序访问需要遍历集合
中介者集中处理复杂通信许多对象以复杂方式相互通信
备忘录捕获并恢复对象状态需要撤销/快照功能
观察者在状态变化时通知依赖对象一对多依赖关系
状态在状态变化时改变行为对象行为取决于状态
策略封装可互换的算法需要在运行时切换算法
模板方法定义骨架,由子类填充具体内容算法结构固定,但步骤有所变化
访问者无需更改类即可添加操作需要为稳定结构添加许多操作

决策指南

请参阅模式选择指南,了解如何选择合适的模式。

如何使用本参考

  1. 选择模式:从上方的决策指南或表格开始
  2. 学习模式:阅读包含示例的完整文档
  3. 快速查阅:使用上方的表格快速参考
  4. 实现:遵循伪代码,并根据你的语言进行调整

语言转换说明

本参考中的伪代码采用以下约定:

  • class 用于类型定义
  • function 用于方法/函数
  • -> 用于调用对象的方法
  • // 用于注释
  • 类型提示写作 name: Type

转换为你的语言:

  • PHP:class、function、->、//,在文档块或 PHP 8+ 中使用类型提示
  • JavaScript/TypeScript:class、function/箭头函数、.、//、TS 类型
  • Python:class、def、.、#、类型提示
  • Java/C#:使用 new、泛型直接映射

基于 Gamma、Helm、Johnson 和 Vlissides(Gang of Four)于 1994 年所著的《设计模式:可复用面向对象软件的基础》中的概念。

评论

支持 Markdown