Browse Clojure Foundations for Java Developers

Functional Design Patterns

Translate common OO design forces into simpler functional solutions built from data and pure functions.

“Design patterns” still matter in Clojure, but they usually show up as simpler building blocks: pure functions, explicit data, composition, and narrow boundaries for side effects.

This section sets the stage for the chapter by reframing patterns as answers to forces (extensibility, reuse, testability, decoupling) rather than as class diagrams to copy.

If you come from Java, the goal is not to forget what you know—it’s to keep the useful instincts and drop the ceremony that Clojure doesn’t need.

In this section

Revised on Friday, April 24, 2026