Design Pattern Reference Cheat Sheet

Use this compact Java pattern cheat sheet to recall when a pattern helps, what pressure it addresses, and what common misuse to watch for.

On this page

This cheat sheet is for quick recall, not for first learning. Each row is a reminder of the real design pressure behind the pattern.

PatternReach for it whenMain misuse to watch for
Factory Methodcallers need a stable creation contract while concrete choice varieshiding simple constructor logic behind unnecessary indirection
Abstract Factoryrelated product families must vary togethercreating a full family abstraction when only one product varies
Builderobject construction is noisy, staged, or validation-heavybuilding trivial objects with ceremonial builders
Prototypea configured object should produce meaningful copiesunclear copy semantics or accidental state sharing
Singletonone process-wide instance is genuinely part of the modeldisguised global state
Strategybehavior must vary cleanly without large conditionalsexploding the number of tiny strategies with no meaningful difference
Observermany listeners must react to one source of changeevent storms and unclear lifecycle management
Commandactions should be first-class, queueable, undoable, or auditablewrapping simple method calls for no real gain
Statebehavior changes with lifecycle statereplacing simple conditional logic with unnecessary class explosion
Adapterincompatible interfaces must collaborateadding wrappers when the code could simply be redesigned directly
Facadea subsystem needs a simpler entry pointturning the facade into an omniscient god object
Proxyaccess needs control for laziness, remoting, or protectionconfusing access control with extra behavior decoration

How To Use The Cheat Sheet

If a pattern choice feels uncertain, look at the “misuse” column first. In Java, misapplied patterns often fail not because the pattern is unknown, but because the real design pressure was named incorrectly.

Revised on Thursday, April 23, 2026