| name | design-patterns |
| description | Gang of Four patterns (Creational, Structural, Behavioral) and when to apply them. |
Design Patterns
Proven solutions to recurring design problems.
Context
You are selecting a design pattern for a problem. Understand the tradeoffs of each.
Domain Context
- Creational: How to create objects? (Singleton, Factory, Builder, Prototype)
- Structural: How to compose objects? (Adapter, Bridge, Facade, Proxy, Decorator)
- Behavioral: How do objects interact? (Observer, Strategy, State, Command, Iterator)
Instructions
- Identify Problem: What design issue are you facing?
- Map to Pattern: Which pattern solves this?
- Understand Intent: Why does this pattern work?
- Consider Tradeoffs: Complexity, flexibility, testability?
- Implement: Code the pattern; don't memorize, understand
- Refine: Adapt the pattern to your context
Anti-Patterns
- Applying patterns everywhere (pattern obsession); YAGNI
- Stacking patterns (Factory + Builder + Proxy); complexity without benefit
- Not understanding the pattern before using it; cargo cult programming
- Choosing pattern based on name not problem; same name, different intent
- Over-engineering simple problems with patterns; sometimes direct code is clearer
Further Reading
- Gang of Four, Design Patterns (the bible)
- Eric Freeman & Elisabeth Freeman, Head First Design Patterns
- Refactoring.Guru Design Patterns online