Skip to content

JerryBlackoo/design-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoF 23 种设计模式:8 种语言实现

本仓库用 Go、Python、C、C++、Rust、Java、JavaScript 和 TypeScript 实现《Design Patterns: Elements of Reusable Object-Oriented Software》中的 23 种经典设计模式。

每个模式目录包含:

  • 一份中文 README.md,说明适用场景、不适用场景和示例角色。
  • 原有 Go 实现。
  • 7 份可独立编译或运行、带自验证断言的语言模板。

模式目录

创建型

结构型

行为型

目录约定

每个模式使用相同的语言布局:

<category>/<pattern>/
├── README.md
├── go/<original>.go
├── python/example.py
├── c/example.c
├── cpp/example.cpp
├── rust/example.rs
├── java/Example.java
├── javascript/example.js
└── typescript/example.ts

这些模板优先使用各语言的惯用机制。例如 Rust 使用 trait 与所有权类型,C 使用结构体和函数指针,JavaScript 使用协议约定,TypeScript 则使用严格类型接口。

一键验证

Windows PowerShell 7:

pwsh ./scripts/validate_examples.ps1

脚本会执行 Go 测试与静态检查,并逐个编译或运行其余 161 个示例。TypeScript 编译器由 npx 固定为 5.9.2,不会在仓库生成 node_modules

所需工具链:Go 1.20+、Python 3.10+、支持 C11/C++17 的 GCC、Rust 1.70+、JDK 17+、Node.js 18+ 与 npm/npx。

若 Windows 上 Rust 使用 MSVC 目标但没有 Visual Studio Build Tools,可安装 GNU 标准库目标并复用 GCC:

rustup target add x86_64-pc-windows-gnu

单独运行

go test ./...
python ./structural/adapter/python/example.py
gcc -std=c11 ./structural/adapter/c/example.c -o adapter.exe
g++ -std=c++17 ./structural/adapter/cpp/example.cpp -o adapter-cpp.exe
rustc --edition=2021 ./structural/adapter/rust/example.rs
javac ./structural/adapter/java/Example.java
node ./structural/adapter/javascript/example.js
npx --yes --package typescript@5.9.2 tsc --project ./tsconfig.json

取舍

示例用于突出模式的参与者、协作方式和适用边界,不代表生产系统必须照搬。优先从直接实现开始;只有当相应变化轴、耦合或生命周期问题真实存在时,再引入模式。

About

Go implementations of the 23 GoF design patterns

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors