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 |