Pattern Evolution: GoF → Distributed → Agent

Software design patterns did not start with Agents. The Gang of Four named 23 object patterns in 1994. The distributed-systems community accumulated another 25 over the next twenty years. Both bodies of work assumed something the Agent era no longer assumes: that all important decisions could be made by a human architect at design time.

This page traces the lineage. The same problems — who creates what, who notifies whom, what happens when something fails, who decides which strategy applies — recur in the Agent era, but the answer shifts from "design-time choice" to "runtime decision under uncertainty." The patterns did not become obsolete. They were lifted one layer.

How to read this page: each pattern below is a clickable cell. Click to expand the four-section lineage — original problem, default assumption, Agent-era counterpart, and the one-line collapse. Detailed cards are marked with a filled dot (); cards still being written show a hollow dot ().

I. Gang of Four — Object Design Patterns (1994)

23 patterns across 3 categories. The shared assumption: a deterministic object world where types, creation, notification, and strategy are decided by a human architect at design time. The Agent era keeps the vocabulary but moves the decisions to runtime.

II. Distributed Systems — Service Patterns (2000s–2020s)

25 patterns in 5 groups. The shared assumption: services are unreliable, networks lie, state drifts, and coordination must be made explicit. The Agent era inherits the same problems with one substitution: the unreliable component is no longer the service — it is the model itself.

The shift in one sentence

Distributed patterns solve how unreliable services collaborate reliably. Agent patterns solve how an uncertain model acts reliably. Same engineering instincts. New unreliable component. One layer up.

This page is the visual companion to the lineage chapter of Designing AI Agents (Manning, 2026). The full chapter walks each cell to its working code and its place in the two-dimensional framework.