Skip to content

About

本仓库旨在通过实际代码示例,展示并解释常见的设计模式,帮助开发者更好地理解和应用这些模式到日常的软件开发中。每个设计模式都包含了详细的说明、适用场景、UML图(如果适用)以及一个或多个编程语言实现的示例。

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏗️ 设计模式代码库

用代码说话,让设计模式不再只是课本上的概念。

本仓库通过 可运行的代码示例 展示 23 种经典设计模式,每种模式都配有详细说明、适用场景分析以及多语言实现。无论你是初学者还是想温故知新的老手,这里都能帮你把抽象的模式概念变成具体的编码直觉。


📖 模式总览

创建型 — 对象怎么建?

模式 一句话 经典场景
单例 全局只一个实例 配置管理器、日志记录器
工厂方法 子类决定创建什么 日志框架选择不同输出方式
抽象工厂 创建一族相关对象 跨平台 UI 组件库
建造者 分步骤组装复杂对象 构造 SQL 查询、组装 HTTP 请求
原型 克隆已有对象而非新建 游戏中批量生成相似角色

结构型 — 对象怎么组合?

模式 一句话 经典场景
适配器 让不兼容的接口能一起工作 新旧系统对接、第三方 SDK 适配
桥接 拆开抽象和实现各自变化 多渲染引擎 + 多平台
组合 树形结构统一处理 文件系统、UI 组件树
装饰器 动态叠加功能 日志/缓存/权限逐层包装
外观 复杂子系统简化入口 一键启动流程封装多个子系统调用
享元 共享细粒度对象省内存 游戏中的粒子/棋子
代理 加个中间人控制访问 远程代理、延迟加载、权限拦截

行为型 — 对象怎么交互?

模式 一句话 经典场景
责任链 请求沿链传递直到有人处理 审批流、异常处理栈
命令 把请求封装成对象 任务队列、撤销/重做
解释器 给语法规则写解释器 规则引擎、正则表达式
迭代器 统一遍历集合的方式 自定义集合的 for 循环
中介者 对象不直接交互,通过中间人 聊天室、UI 事件总线
备忘录 存档再恢复 游戏存档、编辑器撤销
观察者 一变大家跟着变 事件订阅、消息推送
状态 状态决定行为 订单流程(待付→已付→发货→完成)
策略 不同算法可互换 排序策略、折扣策略
模板方法 父类定骨架,子类填细节 测试框架、数据处理流水线
访问者 给对象加操作而不改对象类 编译器 AST 分析

🗂️ 项目结构

design-patterns/
├── creational/            # 创建型模式
│   ├── singleton/         # 单例
│   ├── factory-method/    # 工厂方法
│   ├── abstract-factory/  # 抽象工厂
│   ├── builder/           # 建造者
│   └── prototype/         # 原型
├── structural/            # 结构型模式
│   ├── adapter/           # 适配器
│   ├── bridge/            # 桥接
│   ├── composite/         # 组合
│   ├── decorator/         # 装饰器
│   ├── facade/            # 外观
│   ├── flyweight/         # 享元
│   └── proxy/             # 代理
├── behavioral/            # 行为型模式
│   ├── chain-of-responsibility/ # 责任链
│   ├── command/           # 命令
│   ├── interpreter/       # 解释器
│   ├── iterator/          # 迭代器
│   ├── mediator/          # 中介者
│   ├── memento/           # 备忘录
│   ├── observer/          # 观察者
│   ├── state/             # 状态
│   ├── strategy/          # 策略
│   ├── template-method/   # 模板方法
│   └── visitor/           # 访问者
└── README.md              # 本文件

每个模式目录下包含:

  • README.md — 模式说明、适用场景、UML 类图
  • src/ — 代码示例(含多语言实现)
  • test/ — 测试用例

🚀 如何运行示例

  1. 克隆仓库:

    git clone https://github.com/your-username/design-patterns.git
    cd design-patterns
  2. 进入某个模式目录,查看该模式下的 README.md 获取环境设置和运行说明。

  3. 每个示例都可以独立运行,无需依赖其他模式。


🤝 贡献指南

欢迎任何形式的贡献!提交前请注意:

  • 代码风格:遵循各语言目录下的编码规范
  • 新增模式:确保包含 README 说明 + 至少一种语言实现 + 测试用例
  • 新增语言实现:在已有模式目录的 src/ 下添加,并在 README 中补充说明
  • 提交格式:<模式名>: <简述>,如 singleton: add Kotlin implementation
  • Issue 优先:大的改动建议先开 Issue 讨论

📄 许可证

本项目基于 MIT License 发布,可自由使用、修改和分发。


🙏 致谢

  • 经典参考:Design Patterns: Elements of Reusable Object-Oriented Software(GoF)
  • 开源社区的无私分享,让知识持续流动

About

本仓库旨在通过实际代码示例,展示并解释常见的设计模式,帮助开发者更好地理解和应用这些模式到日常的软件开发中。每个设计模式都包含了详细的说明、适用场景、UML图(如果适用)以及一个或多个编程语言实现的示例。

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages