Home / Patterns Directory

Software Design Patterns Catalog

Filter by category, search real-world analogies, or inspect multi-language implementations in C++, Python, and Java.

33 Patterns & Principles
Category Quick Selector:
ALL CATEGORIES Showing 33 of 33 Patterns

All Software Design Patterns

Browse the complete encyclopedia or click on any category card above to inspect its specific patterns.

Filter by:

Builder Pattern

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

C++ Python Java
Read →

Prototype Pattern

Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.

C++ Python Java
Read →

Bridge Pattern

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

C++ Python Java
Read →

Flyweight Pattern

Fit more objects into the available amount of RAM by sharing common parts of state between multiple objects.

C++ Python Java
Read →

Observer Pattern

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

C++ Python Java
Read →

Command Pattern

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

C++ Python Java
Read →

State Pattern

Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.

C++ Python Java
Read →

Chain of Responsibility Pattern

Pass requests along a chain of handlers. Upon receiving a request, each handler decides either to process the request or to pass it to the next handler in the chain.

C++ Python Java
Read →

Iterator Pattern

Access the elements of an aggregate object sequentially without exposing its underlying representation.

C++ Python Java
Read →

Mediator Pattern

Reduce chaotic dependencies between objects by restricting direct communications between the objects and forcing them to collaborate only via a mediator object.

C++ Python Java
Read →

Memento Pattern

Capture and externalize an object’s internal state without violating encapsulation, so that the object can be restored to this state later.

C++ Python Java
Read →