Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.
Catalog of patterns
List of 22 classic design patterns, grouped by their intent.
Benefits of patterns
Patterns are a toolkit of solutions to common problems in software design. They define a common language that helps your team communicate more efficiently.
Design patterns differ by their complexity, level of detail and scale of applicability. In addition, they can be categorized by their intent and divided into three groups.
History of patterns
Who invented patterns and when? Can you use patterns outside software development? How do you do that?
Criticism of patterns
Are patterns as good as advertised? Is it always possible to use them? Can patterns sometimes be harmful?
Dive Into Design Patterns
Check out our ebook on design patterns and principles. It's available in PDF/ePUB/MOBI formats and includes the archive with code examples in Java, C#, PHP, Python, Ruby, Swift, & TypeScript.