Knowledge Guide
HomeOO & Low-Level DesignBehavioral

Strategy Pattern — UML, Code & When to Use

Swap the algorithm, not the code around it

When one task has several interchangeable implementations — payment methods, compression schemes, routing rules — the Strategy pattern puts each behind a common interface and lets the client pick one at runtime. It replaces a growing if/else (or switch) ladder with polymorphism, and is the textbook way to honour the Open/Closed Principle: add a new strategy without touching existing code.

UML: a Context aggregates a Strategy interface implemented by CreditCardPay and PayPalPay
UML: a Context aggregates a Strategy interface implemented by CreditCardPay and PayPalPay

Code

interface PaymentStrategy { void pay(int amountCents); }
class CreditCardPay implements PaymentStrategy { public void pay(int a){ /* ... */ } }
class PayPalPay     implements PaymentStrategy { public void pay(int a){ /* ... */ } }

class Checkout {                                   // the Context
    private PaymentStrategy strategy;              // swappable
    Checkout(PaymentStrategy s){ this.strategy = s; }
    void confirm(int total){ strategy.pay(total); }
}
new Checkout(new PayPalPay()).confirm(4999);       // choose at runtime

When to use — and what it's NOT

Pitfalls

Takeaways


Re-authored for this guide; UML diagram hand-authored as SVG. Follows GoF and refactoring.guru. See also: SOLID (Open/Closed), Behavioral patterns, State.

🔨 Practice this hands-on — Design Splitwise →🔨 Practice this hands-on — Design Tic-Tac-Toe →
Attempt it from an empty file, break it to feel the failure, then defend it under pushback.
🤖 Don't fully get this? Learn it with Claude

Stuck on Strategy Pattern — UML, Code & When to Use? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🎨 Explain it visually

Build the mental picture, not memorization.

I just read a lesson on **Strategy Pattern — UML, Code & When to Use** (OO & Low-Level Design) and want to truly understand it. Explain Strategy Pattern — UML, Code & When to Use from first principles using ONE vivid real-world analogy and a visual mental model — draw it as ASCII art or a clear step-by-step diagram — with a concrete example using real numbers. Then ask me one question to check I got the mental picture, and wait for my reply. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🤔 Walk me through it (interactive)

Socratic — adapts to where you're stuck.

Teach me **Strategy Pattern — UML, Code & When to Use** interactively. Ask me ONE guiding question at a time, wait for my answer, and adapt to my confusion — build the idea with me step by step instead of explaining it all at once. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧪 Quiz me & fix my gaps

Active recall exposes what you missed.

Quiz me on **Strategy Pattern — UML, Code & When to Use** with 5 questions, easy to tricky, ONE at a time. Tell me if each answer is right; at the end, explain clearly what I got wrong and why. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧠 Make it stick

Intuition + hook + flashcards for long-term memory.

Help me remember **Strategy Pattern — UML, Code & When to Use** for the long term: give the one-sentence intuition, a memorable hook/mnemonic, a tiny worked example, and 3 active-recall flashcards (Q -> A). If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes