All 23 GoF Design Patterns

Design Patterns in NestJS

A comprehensive guide to the Gang of Four design patterns, implemented with real-world e-commerce examples using NestJS, TypeScript, and dependency injection.

Pattern Categories

Three categories covering object creation, composition, and communication.

All 23 Patterns

Every Gang of Four pattern with NestJS implementation and TypeScript code.

creational

Singleton

Ensure a class has only one instance and provide a global point of access to it.

creational

Factory Method

Define an interface for creating an object, but let subclasses decide which class to instantiate.

creational

Abstract Factory

Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

creational

Builder

Separate the construction of a complex object from its representation so that the same construction process can create different representations.

creational

Prototype

Create objects by cloning a prototype rather than constructing from scratch.

structural

Adapter

Convert the interface of a class into another interface clients expect.

structural

Bridge

Decouple an abstraction from its implementation so that the two can vary independently.

structural

Composite

Compose objects into tree structures to represent part-whole hierarchies.

structural

Decorator

Attach additional responsibilities to an object dynamically.

structural

Facade

Provide a unified interface to a set of interfaces in a subsystem.

structural

Flyweight

Use sharing to support large numbers of fine-grained objects efficiently.

structural

Proxy

Provide a surrogate or placeholder for another object to control access to it.

behavioral

Chain of Responsibility

Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.

behavioral

Command

Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

behavioral

Interpreter

Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.

behavioral

Iterator

Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

behavioral

Mediator

Define an object that encapsulates how a set of objects interact.

behavioral

Memento

Capture and externalize an object's internal state so that the object can be restored to this state later.

behavioral

Observer

Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

behavioral

State

Allow an object to alter its behavior when its internal state changes.

behavioral

Strategy

Define a family of algorithms, encapsulate each one, and make them interchangeable.

behavioral

Template Method

Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.

behavioral

Visitor

Represent an operation to be performed on the elements of an object structure.