Browse Clojure Foundations for Java Developers

The Strategy Pattern in Functional Programming

Replace strategy objects with higher-order functions, maps of behavior, and data-driven dispatch.

In Java, Strategy often means “an interface + multiple implementations.” In Clojure, the same idea is usually just passing a function (or a small map of functions) to the code that needs it.

This section shows a few idiomatic shapes: higher-order functions, keyword-to-function dispatch tables, and (when you truly need open extension) protocols or multimethods.

The practical payoff is less scaffolding and more direct code: you can swap behavior without building a class hierarchy.

In this section

Revised on Friday, April 24, 2026