Edocti
Advanced Technical Training for the Software Engineer of Tomorrow
Edocti Training

Design Patterns in Modern C++ (GoF)

Intermediate
21 h
4.7 (91 reviews)

Scheduled sessions

No sessions are available at the moment.
Design Patterns in Modern C++ (GoF)

Design Patterns in Modern C++: Apply classic Gang of Four (GoF) patterns and modern C++ idioms to build robust, scalable software architectures.

Get intensive hands-on practice implementing creational, structural, and behavioral patterns in real-world scenarios.

Learn how to leverage modern C++ features (C++11 through C++26) to simplify, optimize, and modernize pattern implementations.

Gain practical experience: Spend ~70% of the training in hands-on labs focused on refactoring legacy code and building highly extensible systems.

How this helps: Dramatically improve the maintainability, readability, and long-term scalability of your C++ applications.

Who it’s for: C++ engineers looking to elevate their software design skills and write cleaner, more professional code.

The course also includes optional modules on modern pattern alternatives, concurrency, and identifying common anti-patterns.

Skills You Will Learn

GoF Design Patterns Creational Patterns Structural Patterns Behavioral Patterns Code Refactoring Modern C++ (11-26) Memory & Smart Pointers UML Modeling

Curriculum

Day 1 — Foundations & Creational patterns

  • OOP recap, SOLID and when patterns help vs. hurt
  • Modern C++ toolbox: RAII and smart pointers (unique_ptr, shared_ptr, weak_ptr); Move semantics and perfect forwarding; Type erasure and pimpl; Templates: partial specialization, SFINAE, Concepts, policy-based design; constexpr, consteval and compile-time computation; Ranges and views (C++20); std::variant/visit, std::optional, std::any; Coroutines (high-level overview)
  • UML essentials for patterns (class, object, relationships)
  • Factory Method — virtual constructors, registries, unique_ptr returns
  • Abstract Factory — families of products, object graphs, dependency injection
  • Builder — fluent APIs, immutability, assembling invariants
  • Prototype — cloning polymorphic objects; copy/move semantics and deep vs. shallow copy
  • Singleton — testability issues, threading, alternatives (object lifetime, DI containers)

Day 2 — Structural patterns

  • Adapter — object vs. class adapter; ranges-style adaptors; type erasure
  • Facade — stable API over subsystems; PIMPL to reduce rebuilds
  • Proxy — remote/virtual/protection proxies; lazy loading; caching
  • Decorator — composition over inheritance; value vs. reference semantics
  • Composite — tree models; iterators and visitors; value categories
  • Flyweight — intern pools; string views; arena allocators
  • Bridge — orthogonal dimensions; ABI stability; policy-based design

Day 3 — Behavioral patterns & refactoring

  • Strategy — static (templates/policies) vs. dynamic (type erasure/variant)
  • Observer — thread-safety, lock-free queues; signals/slots vs. callbacks
  • Command — undo/redo, macro commands; function objects and lambdas
  • State — table-driven vs. State pattern; variant + visit; transition safety
  • Template Method — CRTP alternatives; non-virtual interface (NVI)
  • Iterator — custom iterators, ranges; coroutines as generators (overview)
  • Mediator — decoupling complex interactions; events bus
  • Memento — snapshot strategies; serialization choices
  • Chain of Responsibility — pipelines; error handling with expected/variant
  • Interpreter — embedded DSLs; parsing choices
  • Visitor — acyclic visitor; std::variant visitation and pattern matching
  • Anti-patterns & smells — shotgun surgery, train wreck, god object
  • Refactoring lab — from ad-hoc code to clear patterns; measuring impact

Optional modules

Optional — Concurrency & async

  • Active Object and Reactor (conceptual) with std::jthread and executors
  • Coroutines for async flows; cancellation and timeouts (high level)

Course Day Structure

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30

Did you attend this course?

Your feedback is invaluable to us. Please share your experience with us and help us improve this course for future participants.

Share your feedback

Want to find out more? We are here to help!

Or email us directly at training@edocti.com.