What is a Design Pattern?
Understand design patterns in OOP: reusable solution templates for recurring problems, with categories, examples, and interview tips.
Expected Interview Answer
A design pattern is a reusable, named solution to a recurring software design problem, expressed as a template of collaborating classes and objects rather than finished code.
Patterns capture proven object-oriented structures — creational (how objects are built), structural (how classes and objects are composed), and behavioral (how objects communicate) — so teams don’t reinvent solutions to well-understood problems. They give engineers a shared vocabulary: saying "use a Factory here" communicates an entire design intent instantly. Patterns are not copy-paste code; each must be adapted to the language and context. Overusing them without a real recurring problem adds needless indirection, so the skill is recognizing when a pattern fits, not memorizing all of them.
- Shared vocabulary that speeds up design discussions
- Proven solutions reduce design-time mistakes
- Improves maintainability through familiar structure
- Eases onboarding since patterns are widely documented
AI Mentor Explanation
A death-over bowling plan — yorker, slower ball, wide yorker — is a reusable template captains apply whenever the situation repeats: last over, defending a small total. Nobody invents a brand-new plan each match; they recognize the pattern and slot in the known solution. A design pattern works the same way: a proven, named response to a recurring situation, adapted slightly to the batter (context) each time.
Step-by-Step Explanation
Step 1
Identify the recurring problem
Recognize a structural or behavioral problem shape you’ve seen before, not just this one instance.
Step 2
Match it to a known pattern
Compare against catalogued patterns (Gang of Four, etc.) to find one whose intent fits.
Step 3
Adapt the template
Apply the pattern’s roles (e.g. Creator, Product) to your actual classes, not verbatim.
Step 4
Validate the trade-off
Confirm the added indirection is worth the flexibility gained for this specific context.
What Interviewer Expects
- Distinguishing creational, structural, and behavioral pattern families
- Ability to name at least a few concrete patterns with real use cases
- Awareness that patterns are templates, not literal code to copy
- Judgment about when a pattern is overkill
Common Mistakes
- Treating patterns as mandatory rather than situational tools
- Memorizing names without understanding the underlying problem solved
- Applying a pattern where a simple function would suffice
- Confusing a pattern with a language feature or library
Best Answer (HR Friendly)
“A design pattern is a proven, reusable way to solve a common software design problem, so instead of inventing a solution from scratch each time, developers apply a well-understood template and adapt it to their specific situation.”
Code Example
interface DiscountStrategy {
double apply(double price);
}
class NoDiscount implements DiscountStrategy {
public double apply(double price) { return price; }
}
class PercentageOff implements DiscountStrategy {
private final double percent;
PercentageOff(double percent) { this.percent = percent; }
public double apply(double price) { return price * (1 - percent / 100); }
}
class Checkout {
private DiscountStrategy strategy;
Checkout(DiscountStrategy strategy) { this.strategy = strategy; }
double total(double price) { return strategy.apply(price); }
}
// Caller swaps strategies without changing Checkout itself
Checkout c = new Checkout(new PercentageOff(10));
System.out.println(c.total(200.0));Follow-up Questions
- What is the difference between creational, structural, and behavioral patterns?
- Can you name a real bug caused by overusing design patterns?
- How does the Strategy pattern differ from an if-else chain?
- What is an anti-pattern?
MCQ Practice
1. Design patterns are best described as?
Patterns are structural templates you adapt to your context, not literal code.
2. Which category does the Strategy pattern belong to?
Strategy governs how objects communicate and vary behavior, so it is behavioral.
3. A key risk of overusing design patterns is?
Applying a pattern where none is needed adds abstraction layers without real benefit.
Flash Cards
What is a design pattern? — A reusable, named template solving a recurring design problem.
Three pattern families? — Creational, structural, behavioral.
Are patterns literal code? — No — they are adapted templates, not copy-paste solutions.
Risk of overusing patterns? — Unnecessary indirection and complexity.