# Design Patterns Index

This note serves as a central hub for the various software design patterns documented in this vault.

## Creational Patterns
These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.

*   [[programming/builder-pattern|Builder Pattern]]
*   [[programming/prototype-pattern|Prototype Pattern]]
*   [[programming/design-patterns#1. Singleton Pattern|Singleton Pattern]]
*   [[programming/design-patterns#2. Factory Method Pattern|Factory Method Pattern]]

## Structural Patterns
These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.

*   [[programming/composite-pattern|Composite Pattern]]
*   [[programming/decorator-pattern|Decorator Pattern]]
*   [[programming/flyweight-pattern|Flyweight Pattern]]
*   [[programming/proxy-pattern|Proxy Pattern]]

## Behavioral Patterns
These patterns are concerned with algorithms and the assignment of responsibilities between objects.

*   [[programming/chain-of-responsibility-pattern|Chain of Responsibility Pattern]]
*   [[programming/command-pattern|Command Pattern]]
*   [[programming/iterator-pattern|Iterator Pattern]]
*   [[programming/mediator-pattern|Mediator Pattern]]
*   [[programming/memento-pattern|Memento Pattern]]
*   [[programming/state-pattern|State Pattern]]
*   [[programming/strategy-pattern|Strategy Pattern]]
*   [[programming/template-method-pattern|Template Method Pattern]]
*   [[programming/visitor-pattern|Visitor Pattern]]

## Cloud & Distributed Systems Patterns
Patterns specifically useful for designing distributed systems, microservices, and cloud-native applications.

*   [[programming/ambassador-pattern|Ambassador Pattern]]
*   [[programming/bulkhead-pattern|Bulkhead Pattern]]
*   [[programming/circuit-breaker-pattern|Circuit Breaker Pattern]]
*   [[programming/saga-pattern|Saga Pattern]]
*   [[programming/strangler-fig-pattern|Strangler Fig Pattern]]
*   [[programming/throttling-pattern|Throttling Pattern]]
*   [[programming/service-mesh#5. The Sidecar Pattern Explained|Sidecar Pattern]]