Patterns are reusable solutions to recurring design problems, especially around boundaries, dependencies, and change management. Used well, patterns reduce cognitive load; used blindly, they add accidental complexity. Example: dependency injection is useful when it makes composition and testing simpler, not when it hides control flow.
References
- Design Patterns: Elements of Reusable Object-Oriented Software — the original Gang of Four catalog, including pattern intent, applicability, structure, consequences, and relationships.
- Software design pattern (Wikipedia)