G/Go Pattern Lab

THE GO PATTERN LAB / VOL. 02

23 个 pattern。
写小,想清楚。

熟悉 Java / Scala / Python / C++?从问题、role mapping 和 failure test 入手,看看经典 GoF 在 Go 中哪些保留、哪些可以缩小。

23 runnable patterns11 OSS repositories40 pinned source ranges

按你要解决的问题,选一个 pattern

23 / 23 patterns

Creational 5 patterns · 控制 object 如何创建
Structural 7 patterns · 控制 component 如何 composition
Behavioral 11 patterns · 控制 action、state 与 collaboration

先分清这些相似设计

Factory Method / Abstract Factory

替换 creation operation;或一起替换相关 product family。

Adapter / Decorator / Proxy

转换 contract;增加 behavior;控制 access。shape 相近,intent 不同。

Strategy / State / Template Method

caller 选 algorithm;内部 state 推进;固定 skeleton 开放 hooks。

Command / Memento / Observer

encapsulation action;保存 prior state;传播 event。都不自动保证 transaction。

先跑一次,再改一个反例

Go 1.23+ · standard library only。下载 ZIP、解压,在 gof-min 目录 execution 以下 command。网页中的 Test tab 展示同一份 test。

go test -race ./...

所有 implementation 与 test 都是原创、 runnable 的最小例子。除 Singleton、Flyweight、Observer 明确涉及 concurrency 外,mutable object 按 single-owner 使用;caller 提供有效的 non-nil dependency。它们不是 production framework。

Direct structure:角色和 mechanism 清楚对应。Go adaptation:意图相同,使用 composition、function 或不同 representation。Related mechanism: comparable,但不足以声称完整 implementation 经典 pattern。 mapping 是本教程的分析。

查看 Go lab 验证记录 · 完整 source metadata