Factory Method
Defines an interface for creating an object, but lets subclasses decide which class to instantiate.
Read more →From foundational GoF patterns to enterprise architecture — comprehensive guides with production-ready code examples in 11 programming languages.
The classic 23 patterns from Design Patterns: Elements of Reusable Object-Oriented Software — every software developer's essential toolkit.
Battle-tested blueprints for structuring large-scale systems: Clean Architecture, CQRS, Event Sourcing, Hexagonal Architecture, and more.
Five foundational object-oriented design principles that make software more maintainable, flexible, and easy to extend.
The rules that keep codebases clean, consistent, and easy to change — DRY, OAOO, SSOT, and KISS.
Search and filter all 23 classic patterns
Defines an interface for creating an object, but lets subclasses decide which class to instantiate.
Read more →Provides an interface for creating families of related or dependent objects without specifying their concrete classes.
Read more →Ensures that a class has only one instance and provides a global point of access to it.
Read more →Separates the construction of a complex object from its representation.
Read more →Creates new objects by copying an existing object (prototype).
Read more →Allows objects with incompatible interfaces to work together.
Read more →Splits a large class or set of closely related classes into two separate hierarchies.
Read more →Composes objects into tree structures to represent part-whole hierarchies.
Read more →Attaches additional responsibilities to an object dynamically.
Read more →Provides a simplified interface to a complex subsystem.
Read more →Shares common state between multiple objects to save memory.
Read more →Provides a surrogate or placeholder for another object to control access to it.
Read more →Passes a request along a chain of handlers until one handles it.
Read more →Encapsulates a request as an object, allowing parameterization and queuing.
Read more →Defines a grammar and interpreter for a language.
Read more →Provides a way to access elements of a collection sequentially.
Read more →Reduces coupling between objects by centralizing their communication.
Read more →Captures and externalizes an object's state for later restoration.
Read more →Defines a one-to-many dependency between objects for automatic notifications.
Read more →Allows an object to alter its behavior when its internal state changes.
Read more →Defines a family of algorithms and makes them interchangeable.
Read more →Defines the skeleton of an algorithm, deferring some steps to subclasses.
Read more →Separates an algorithm from the object structure it operates on.
Read more →