All Design Patterns
All 23 Gang of Four design patterns, organized by category. Each includes a real-world e-commerce example built with NestJS.
Creational
5 patternsPatterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.
Singleton
Ensure a class has only one instance and provide a global point of access to it.
Factory Method
Define an interface for creating an object, but let subclasses decide which class to instantiate.
Abstract Factory
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Builder
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
Prototype
Create objects by cloning a prototype rather than constructing from scratch.
Structural
7 patternsPatterns that ease the design by identifying a simple way to realize relationships among entities.
Adapter
Convert the interface of a class into another interface clients expect.
Bridge
Decouple an abstraction from its implementation so that the two can vary independently.
Composite
Compose objects into tree structures to represent part-whole hierarchies.
Decorator
Attach additional responsibilities to an object dynamically.
Facade
Provide a unified interface to a set of interfaces in a subsystem.
Flyweight
Use sharing to support large numbers of fine-grained objects efficiently.
Proxy
Provide a surrogate or placeholder for another object to control access to it.
Behavioral
11 patternsPatterns that are concerned with algorithms and the assignment of responsibilities between objects.
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.
Command
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
Interpreter
Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.
Iterator
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
Mediator
Define an object that encapsulates how a set of objects interact.
Memento
Capture and externalize an object's internal state so that the object can be restored to this state later.
Observer
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
State
Allow an object to alter its behavior when its internal state changes.
Strategy
Define a family of algorithms, encapsulate each one, and make them interchangeable.
Template Method
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.
Visitor
Represent an operation to be performed on the elements of an object structure.