Welcome to the world of DESIGN PATTERNS! What are they? Think of them as reusable solutions to common design problems in software development. You probably heard of the insanely popular: Design Patterns: Elements of Reusable Object-Oriented Software by (Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides). While not the easiest reading, they provided concepts to describing reusable design problems. So dive in! They are broken out by creational, structural, and behavioral patterns with additional bonus patterns outside the scope of the book.
Creational Design patterns are deals with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or in added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.
Structural design patterns are design patterns that deal with object composition, creating relationships between objects to form larger structures. These patterns are concerned with how objects are made up and how they can be modified and composed to get new functionality.
These patterns are useful when you need to create relationships between objects to provide new functionality. They can help you reduce the complexity of your code by creating a simpler interface for clients to use.
A behavioral design pattern is a design pattern that focuses on communication between objects, what goes on between objects and how they operate together. These patterns are concerned with communication between objects, what goes on between objects and how they operate together.
These are just a few examples of the many design patterns that are used in software engineering. These are just a place to start and be aware of - over time you will actually come up with your own design patterns.