The Strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. It’s particularly useful when you need to select an algorithm at runtime based on user input or other criteria.
In depth
The Strategy pattern is a behavioral design pattern that allows you to define a set of algorithms, encapsulate each one in a separate class, and make them interchangeable. This encapsulation helps in promoting the Open/Closed Principle, as you can introduce new strategies without altering existing code. A common scenario is when you have multiple sorting algorithms; instead of hardcoding them, you can create a strategy interface that different sorting classes implement. It also aids in simplifying complex conditional logic in your code by allowing the algorithm to be selected dynamically based on runtime conditions. However, using this pattern can lead to an increase in the number of classes, which can complicate the system if not managed properly.
Example scenario
In an e-commerce application, you might need different shipping calculation strategies based on the customer's location or selected delivery option. Implementing the Strategy pattern allows creating a ShippingStrategy interface with classes like StandardShipping, ExpressShipping, and InternationalShipping. When a user selects a shipping option, the appropriate strategy is instantiated and used to calculate the shipping cost dynamically, keeping the logic modular and easy to extend.
Common mistakes
One common mistake developers make is overusing the Strategy pattern, applying it when it's not necessary. If you only have one algorithm, introducing a strategy adds unnecessary complexity. Another mistake is neglecting to define a clear interface for the strategies, which can lead to confusion if the implementation details vary too widely among different strategies. This can make it difficult to manage and use the strategies effectively.
Follow-up questions
- Can you discuss the differences between the Strategy pattern and the State pattern?
- What are some trade-offs you might consider when using the Strategy pattern?
- How does the Strategy pattern fit within the larger context of SOLID principles?
- Can you give an example of a situation where the Strategy pattern might not be beneficial?

Want all 2,000 questions in one PDF?
- Short answers, in-depth explanations, common mistakes and follow-ups
- 89 topics, from Beginner to Architect, with a clickable contents list
- 226 extra questions that are not on this website
- Free Bonus Pack: 30-day study plan, behavioral questions, salary scripts
Includes 226 extra questions that are not on this site, plus a free Bonus Pack.
Get both books for $9.99 (save $2.99):
The material stays free to read online. This is the organised, offline, print-ready PDF edition. Secure payment by PayPal; your personal download link is emailed after payment is confirmed. Digital product, no shipping.