Reference

Design Patterns

A pattern catalog is easy to find. What is harder to find is an explanation of why each pattern exists: what pressure in real code produced it, and what it costs you to adopt. That is the part I care about, so every page here ends with it.

43 of 43 written · all 23 Gang of Four patterns, the foundations underneath them, and the ones that took over after 1995.

Creational

5/5

Patterns about how objects get made: deferring the choice of concrete class, controlling how many exist, or separating construction from representation.

Structural

7/7

Patterns about how classes and objects are composed into larger structures. Several are now built directly into modern languages.

Behavioral

11/11

Patterns about how responsibility is assigned and how objects talk to each other, covering the algorithms and the flow of control.

Foundations

5/5

Ideas that sit underneath the catalog. Some are too fundamental to call patterns, some are patterns the Gang of Four left out, and one is just my own way of telling the structural patterns apart.

Modern Practice

10/10

Patterns that dominate working code today but sit outside the 1995 catalog. They were either invented after it, or considered too obvious to write down at the time.

Ownership and Lifetimes

5/5

Patterns that came out of Rust, where the compiler tracks who owns a value and how long it lives. They answer questions the 1995 catalog never asked, because it assumed the programmer would get resource lifetime right by hand. Most of them have older relatives in C and C++.

Sources and further reading are collected in the bibliography.