Design Patterns
Design patterns are reusable solutions to common problems in software design. They are templates that can be applied to different situations. They are not complete solutions, but rather guidelines on how to solve a problem.
Types of Design Patterns
There are three main types of design patterns:
Creational Patterns: These patterns are all about class instantiation. This pattern can be further divided into class-creation patterns and object-creational patterns. While class-creation patterns use inheritance effectively in the instantiation process, object-creation patterns use delegation effectively to get the job done.
Structural Patterns: These patterns are all about Class and Object composition. Structural class-creation patterns use inheritance to compose interfaces. Structural object-patterns define ways to compose objects to obtain new functionality.
Behavioral Patterns: These patterns are all about Class's objects communication. Behavioral patterns are those patterns that are most specifically concerned with communication between objects.