| Strategy | one step of an algorithm varies | pass a TFunc<..>/TProc<..>; only make a class family if the strategy holds state |
| Template Method | fixed skeleton, a few varying steps | virtual/abstract methods on a base class, overridden by descendants |
| State | behaviour changes with an object's mode, case ladders repeat | a small state class per mode behind a base class; swap the field |
| Observer | many parts must react to a change, loosely coupled | System.Messaging.TMessageManager (subscribe/broadcast) — no hand-rolled listener list |
| Command | wrap an action as a value (undo, queue, macro) | often just a TProc; a class only when you need undo/serialisation |
| Factory Method | pick a concrete type at runtime | a class function Create...: TBase that returns the right descendant |
| Abstract Factory | create a whole family of related objects | one factory class with several class functions |
| Builder | object needs many optional steps to construct | fluent methods returning Self, then Build |
| Adapter | fit a foreign/legacy API to yours | a thin wrapper class exposing your shape, delegating inward |
| Decorator | add behaviour without subclass explosion | a wrapper holding the wrapped object and forwarding, adding around it |
| Facade | hide a messy subsystem behind one door | one coarse class with a few methods over the tangle |
| Proxy | control access (lazy load, cache, guard) | a stand-in class with the same surface as the target |
| Chain of Responsibility | try handlers in order until one copes | a list of handler objects, or an ordered list of TFunc<..,Boolean> |
| Singleton | exactly one shared instance | a unit-level accessor function Foo: TFoo freed in finalization — beware shared mutable state and threads |