Application Sitemap & Directory
Complete hierarchical index of all pages, topics, code samples, and machine-readable feeds in the PatternForge platform.
OOP Core Foundations
Foundational Object-Oriented Programming mechanisms—most critically Polymorphism—that enable dynamic dispatch, runtime decoupling, and serve as the architectural bedrock for all GoF design patterns.
-
OOP BEDROCKPolymorphism (The OOP Bedrock)
One unified interface, multiple underlying forms — the foundational bedrock of all software design patterns.
C++ • Python • Java Open →
SOLID Principles
The 5 foundational object-oriented design principles formulated by Robert C. Martin (Uncle Bob) to create maintainable, understandable, and flexible software.
-
SOLIDSingle Responsibility Principle (SRP)
A module or class should have one, and only one, reason to change.
C++ • Python • Java Open → -
SOLIDOpen/Closed Principle (OCP)
Software entities should be open for extension, but closed for modification.
C++ • Python • Java Open → -
SOLIDLiskov Substitution Principle (LSP)
Subtypes must be substitutable for their base types without altering program correctness.
C++ • Python • Java Open → -
SOLIDInterface Segregation Principle (ISP)
Clients should not be forced to depend upon interfaces that they do not use.
C++ • Python • Java Open → -
SOLIDDependency Inversion Principle (DIP)
High-level modules should not depend on low-level modules. Both should depend on abstractions.
C++ • Python • Java Open →
DOP (Data-Oriented Patterns)
Data-Oriented Programming (DOP) & Design patterns that treat data as a first-class citizen, separating code from passive immutable data, maximizing CPU cache locality and composability.
-
DOPDOP: Separate Code from Data
Code lives in pure functions; data lives in passive, transparent data structures without encapsulated methods.
C++ • Python • Java Open → -
DOPDOP: Immutable Data Modeling
Treat data as immutable values that can never change once created. Transformations produce new data.
C++ • Python • Java Open → -
DOPDOP: Schema-Based Validation
Separate data schema from data representation. Validate data dynamically via explicit contracts.
C++ • Python • Java Open → -
DOPDOP: Structure of Arrays (SoA) vs Array of Structures (AoS)
Organize data in memory to match CPU cache lines and SIMD hardware for orders-of-magnitude faster batch processing.
C++ • Python • Java Open → -
DOPDOP: Entity Component System (ECS) Pattern
Decouple game and domain architecture into Entities (IDs), Components (raw data), and Systems (pure logic).
C++ • Python • Java Open →
Creational Patterns
Patterns that deal with object creation mechanisms, increasing flexibility and reuse of existing code by isolating the object instantiating logic.
-
CREATIONALSingleton Pattern
Ensure a class has only one instance, and provide a global point of access to it.
C++ • Python • Java Open → -
CREATIONALFactory Method Pattern
Define an interface for creating an object, but let subclasses decide which class to instantiate.
C++ • Python • Java Open → -
CREATIONALAbstract Factory Pattern
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
C++ • Python • Java Open → -
CREATIONALBuilder Pattern
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
C++ • Python • Java Open → -
CREATIONALPrototype Pattern
Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
C++ • Python • Java Open →
Structural Patterns
Patterns that explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
-
STRUCTURALAdapter Pattern
Convert the interface of a class into another interface clients expect.
C++ • Python • Java Open → -
STRUCTURALDecorator Pattern
Attach additional responsibilities to an object dynamically without modifying its structure.
C++ • Python • Java Open → -
STRUCTURALFacade Pattern
Provide a unified interface to a set of interfaces in a subsystem.
C++ • Python • Java Open → -
STRUCTURALProxy Pattern
Provide a surrogate or placeholder for another object to control access to it.
C++ • Python • Java Open → -
STRUCTURALComposite Pattern
Compose objects into tree structures to represent part-whole hierarchies.
C++ • Python • Java Open → -
STRUCTURALBridge Pattern
Decouple an abstraction from its implementation so that the two can vary independently.
C++ • Python • Java Open → -
STRUCTURALFlyweight Pattern
Fit more objects into the available amount of RAM by sharing common parts of state between multiple objects.
C++ • Python • Java Open →
Behavioral Patterns
Patterns concerned with algorithms and the assignment of responsibilities between objects, defining clear communication channels.
-
BEHAVIORALStrategy Pattern
Define a family of algorithms, encapsulate each one, and make them interchangeable at runtime.
C++ • Python • Java Open → -
BEHAVIORALObserver 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 Open → -
BEHAVIORALCommand 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 Open → -
BEHAVIORALState Pattern
Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.
C++ • Python • Java Open → -
BEHAVIORALChain 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 Open → -
BEHAVIORALTemplate Method Pattern
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.
C++ • Python • Java Open → -
BEHAVIORALIterator Pattern
Access the elements of an aggregate object sequentially without exposing its underlying representation.
C++ • Python • Java Open → -
BEHAVIORALMediator 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 Open → -
BEHAVIORALMemento 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 Open → -
BEHAVIORALVisitor Pattern
Separate an algorithm from the object structure on which it operates.
C++ • Python • Java Open →