Further Reading

Additional design patterns organized by category. Each entry includes a brief description and a link to learn more.

Architectural Patterns

| Pattern | Description | Reference | |———|————-|———–| | Microservices | Decompose app into independently deployable services | microservices.io | | Service Mesh | Infrastructure layer for service-to-service communication (Istio, Linkerd) | Istio Docs | | Event-Driven Architecture | Components communicate via async events | Microsoft Architecture Guide | | Hexagonal / Ports & Adapters | Isolate core logic from external concerns | Alistair Cockburn | | Strangler Fig | Incrementally replace legacy systems | Martin Fowler | | Backends for Frontends (BFF) | Separate backend per frontend type | Sam Newman |

Cloud-Native Extras

| Pattern | Description | Reference | |———|————-|———–| | Ambassador | Proxy alongside service for cross-cutting concerns | Microsoft Architecture Patterns | | API Gateway | Single entry point routing to backend services | microservices.io |

Enterprise Application (Fowler/PoEAA)

| Pattern | Description | Reference | |———|————-|———–| | Unit of Work | Track changes and write atomically | Martin Fowler | | Data Mapper | Transfer data between objects and DB independently | Martin Fowler | | Active Record | Object wraps DB row with domain logic | Martin Fowler | | Identity Map | Ensure each object loaded only once | Martin Fowler | | Service Layer | Application boundary with available operations | Martin Fowler | | Domain Model | Object model incorporating behavior and data | Martin Fowler |

Enterprise Integration (Hohpe & Woolf)

| Pattern | Description | Reference | |———|————-|———–| | Message Channel | Connect apps via messaging channel | Enterprise Integration Patterns | | Message Router | Route messages based on rules | Enterprise Integration Patterns | | Message Filter | Filter uninteresting messages | Enterprise Integration Patterns | | Dead Letter Channel | Route unprocessable messages | Enterprise Integration Patterns | | Idempotent Receiver | Handle duplicate messages safely | Enterprise Integration Patterns | | Content-Based Router | Route by message content | Enterprise Integration Patterns | | Pipes and Filters | Chain independent processing stages | Enterprise Integration Patterns |

DDD Extras

| Pattern | Description | Reference | |———|————-|———–| | Domain Event | Capture domain happenings as first-class objects | Martin Fowler | | Value Object | Immutable concept defined by attributes | Martin Fowler |

Concurrency Extras

| Pattern | Description | Reference | |———|————-|———–| | Active Object | Decouple invocation from execution via queue | Wikipedia | | Thread Pool | Pool of pre-created worker threads | Wikipedia | | Producer-Consumer | Decouple producers/consumers with shared buffer | Wikipedia | | Read-Write Lock | Concurrent reads, exclusive writes | Wikipedia | | Proactor | Async I/O completion dispatching | Wikipedia | | Half-Sync/Half-Async | Separate sync and async processing layers | POSA2 | | Leader/Followers | Thread pool taking turns as event leader | Wikipedia |

Functional Programming Patterns

| Pattern | Description | Reference | |———|————-|———–| | Monad | Encapsulate computations with context, compose via bind | Wikipedia | | Option/Maybe | Typed presence/absence without null | Wikipedia | | Either/Result | Typed success/failure without exceptions | Wikipedia | | Functor | Apply function over wrapped value | Wikipedia | | Lens | Composable immutable getters/setters for nested data | Wikipedia | | Higher-Order Function | Functions taking/returning functions | Wikipedia | | Algebraic Data Types | Sum types + product types with pattern matching | Wikipedia |

Game Programming Patterns (Nystrom)

| Pattern | Description | Reference | |———|————-|———–| | Game Loop | Continuous loop decoupling input, update, render | Game Programming Patterns | | Entity-Component-System | Compose entities from reusable components | Game Programming Patterns | | Update Method | Per-object update called each frame | Game Programming Patterns | | Double Buffer | Swap two buffers to avoid tearing | Game Programming Patterns | | Spatial Partition | Organize objects by location for efficient queries | Game Programming Patterns | | Type Object | Define types as data, not code | Game Programming Patterns | | Bytecode | Encode behavior in portable instruction set | Game Programming Patterns |

UI/Frontend Patterns

| Pattern | Description | Reference | |———|————-|———–| | Flux/Redux | Unidirectional data flow with single store | Redux Docs | | Model-View-Presenter (MVP) | Presenter handles presentation logic | Wikipedia |

Post-GoF Extras

| Pattern | Description | Reference | |———|————-|———–| | Multiton | Map of named singleton instances | Wikipedia | | Lazy Initialization | Defer creation until first use | Wikipedia |

Pattern Collection Websites

Comprehensive online resources for learning and referencing design patterns:

Resource Description Link
Refactoring.Guru Visual explanations of all GoF patterns with code in 10+ languages refactoring.guru
SourceMaking Design patterns, anti-patterns, and refactoring catalog sourcemaking.com
Patterns of Enterprise Application Architecture Martin Fowler’s PoEAA catalog martinfowler.com
Enterprise Integration Patterns Hohpe & Woolf’s messaging patterns catalog enterpriseintegrationpatterns.com
Game Programming Patterns Robert Nystrom’s free online book gameprogrammingpatterns.com
Cloud Design Patterns Microsoft Azure’s cloud architecture patterns learn.microsoft.com
Microservices Patterns Chris Richardson’s microservices pattern catalog microservices.io
Design Patterns for Humans Ultra-simplified explanations with real-world examples github.com/kamranahmedse
Awesome Design Patterns Curated list of design pattern resources by language github.com/DovAmir
Java Design Patterns Open-source collection with Java implementations java-design-patterns.com
Rust Design Patterns Idiomatic Rust patterns and anti-patterns rust-unofficial.github.io
Python Patterns Collection of design patterns in Python python-patterns.guide

Back to top

Design Patterns Guide — content is provided for educational purposes.

This site uses Just the Docs, a documentation theme for Jekyll.