Gang of four design patterns

Pattern Catalog

Creational design patterns

Creational Design Patterns are concerned with the way in which objects are created. They reduce complexities and instability by creating objects in a controlled manner.

Family Name Definition link Common usage When to use
Creational Factory Method pattern Factory patterns
Creational Abstract Factory pattern Factory patterns
Creational Builder pattern Builder pattern
Creational Prototype pattern Prototype pattern
Creational Singleton pattern Singleton pattern

Structural design patterns

The common objective of the structural patterns is to identify how to realize complex relationships between classes and objects in a simple and flexible way.

Family Name Definition link Common usage When to use
Structural Adapter pattern Adapter pattern
Structural Bridge pattern Bridge pattern
Structural Composite pattern Composite pattern
Structural Decorator pattern Decorator pattern
Structural Facade pattern Facade pattern
Structural Flyweight pattern Flyweight pattern
Structural Proxy pattern Proxy pattern

Behavioral design patterns

The Behavioral pattern family addresses the responsibilities of objects in an application and how they communicate between them at runtime.

Well-designed enterprise applications are composed of lightweight objects with specific responsibilities divided between them in accordance to the Single Responsibility principle, one of the SOLID design principles

Family Name Definition link Common usage Notes
Behavioral Chain of responsibility pattern Chain of responsibility pattern
Behavioral Command pattern Command pattern
Behavioral Iterator pattern Iterator pattern
Behavioral Mediator pattern Mediator pattern
Behavioral Memento pattern Momento pattern
Behavioral Observer pattern Observer pattern RE-LEARN
Behavioral State pattern State pattern
Behavioral Strategy pattern Strategy pattern
Behavioral Template Method pattern Template method pattern
Behavioral Visitor pattern Visitor pattern

Reading material

  1. https://springframework.guru/gang-of-four-design-patterns/
  2. https://github.com/DovAmir/awesome-design-patterns