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