Software design pattern

It is:

  • A General repeatable solution to a commonly occurring problem in software design.
  • A description or template for how to solve a problem that can be used in many different situations.

It is not:

  • A finished design that can be transformed directly into code.

Uses of Design Patterns

Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation.

Creational design patterns

These design patterns are all about class instantiation. This pattern can be further divided into class-creation patterns and object-creational patterns.
Structural design patterns

These design 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 design patterns

These design patterns are all about Class’s objects communication. Behavioral patterns are those patterns that are most specifically concerned with communication between objects.

 

Reference:

https://sourcemaking.com/design_patterns

flickr photo by Mathias Appel https://flickr.com/photos/mathiasappel/9035208079 shared under a Creative Commons (CC0) license