1.Introduction
- Preliminaries
- Important Concepts
- The SOLID Design Principles
- Time for Patterns!
- ICreational Patterns
- Returning Objects From Functions
2.Builder
- Scenario
- Simple Builder
- Fluent Builder
- Communicating Intent
- Groovy-style Builder
- Composite Builder
- Summary
3.Factories
- Scenario
- Factory Method
- Factory
- Inner Factory
- Abstract Factory
- Functional Factory
- Summary
4.Prototype
- Object Constrution
- Ordinary Duplication
- Duplication via Copy Construction
- Serialization
- Prototype Factory
- Summary
5.Singleton
- Singleton as Global Object
- Classic Implementation
- The Trouble with Singleton
- Singletons and Inversion of Control
- Monostate
- Summary
- IIStructural Patterns
6.Adapter
- Scenario
- Adapter
- Adapter Temporaries
- Summary
7.Bridge
- The Pimpl Idiom
- Bridge
- Summary
8.Composite
- Array Backed Properties
- Grouping Graphic Objects
- Neural Networks
- Summary
9.Decorator
- Scenario
- Dynamic Decorator
- Static Decorator
- Functional Decorator
- Summary
10.Façade
- How the Terminal Works
- An Advanced Terminal
- Where’s the Façade?
- Summary
11.Flyweight
- User Names
- Boost.Flyweight
- String Ranges
- Summary
12.Proxy
- Smart Pointers
- Property Proxy
- Virtual Proxy
- Communication Proxy
- Summary
- IIIBehavioral Patterns
13.Chain of Responsibility
- Scenario
- Pointer Chain
- Broker Chain
- Summary
14.Command
- Scenario
- Implementing the Command Pattern
- Undo Operations
- Composite Command
- Command Query Separation
- Summary
15.Interpreter
- Numeric Expression Evaluator
- Parsing with Boost.Spirit
- Summary
16.Iterator
- Iterators in the Standard Library
- Traversing a Binary Tree
- Iteration with Coroutines
- Summary
17.Mediator
- Chat Room
- Mediator with Events
- Summary
18.Memento
- Bank Account
- Undo and Redo
- Summary
19.Null Object
- Scenario
- Null Object
shared_ptris not a Null Object- Design Improvements
- Implicit Null Object
- Summary
20.Observer
- Property Observers
- Observer<T>
- Observable<T>
- Connecting Observers and Observables
- Dependency Problems
- Unsubscription and Thread Safety
- Reentrancy
- Observer via Boost.Signals2
- Summary
21.State
- State Driven State Transitions
- Handmade State Machine
- State Machines with Boost.MSM
- Summary
22.Strategy
- Dynamic Strategy
- Static Strategy
- Summary
23.Template Method
- Game Simulation
- Summary
24.Visitor
- Intrusive Visitor
- Reflective Printer
- WTH is Dispatch?
- Classic Visitor
- Acyclic Visitor
- Variants and
std::visit - Summary
- IVAppendix A: Functional Design Patterns