Software design patterns and principles are ways of organizing and designing code in order to make sure the code is high quality, well-organized, easy to understand and easy to change over time.
These patterns are not specific libraries that you can plug into your application. These are, rather, guidelines on how to tackle certain problems in certain situations. Examples of design patterns include:
- SOLID Principles - Anagram representing 5 principles to writing high-quality software. Check out this detailed conference talk for a solid introduction.
- Creational Patterns - How to instantiate an object or group of related objects.
- Structural patterns - How different objects work in relationship to one another.
- Behavioral Patterns - How different objects communicate data to one another.
- Coupling and Cohesion - How to organize your code and classes in a way that is well-designed and well-organized.
To learn more about software design patterns and principles, check the following introductory links:
- An Introduction to Software Design Patterns
- Software Design Pattern Notes
- Design Patterns for Humans
- Intro to Design Patterns
- Coupling and Cohesion
Understanding patterns takes time, and requires you to try applying these patterns into your own code and projects to understand their benefits and trade-offs.