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:
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:
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.