•
an interchangeable algorithm selected by the client and injected, replacing a conditional over variants
•
behavior varies with an internal state object, and the state objects themselves decide the transitions
•
identical diagrams, different driver: the client picks the strategy, the states pick their successor
•
the base class fixes the algorithm's skeleton and defers named steps to subclasses
•
subjects broadcast to registered observers without knowing who or how many they are
•
an observer that never unregisters keeps itself and the subject alive; the lapsed listener is the classic leak
•
peers talk to one hub instead of to each other, trading N-to-N coupling for a hub that can grow into a god object
•
a request captured as an object, which is what makes queueing, logging, retry and undo possible
•
undo requires the command to store enough prior state to reverse itself, not merely to re-run
•
a request travels along handlers until one takes it, and nothing guarantees any of them will
•
traversal is externalized into its own object so the collection's internal structure stays hidden
•
mutating a collection mid-traversal is exactly the fault fail-fast iterators exist to surface
•
moves an operation out of a class hierarchy so a NEW operation needs no edit to the element classes
•
Visitor makes new operations cheap and new element types expensive; ordinary polymorphism trades exactly the other way
•
captures an object's internal state for later restore without exposing that state to the caller
•
one class per grammar rule, evaluated over a syntax tree; practical only for small, stable languages