Hands‑on mit klassischen Er">

Edocti
Fortgeschrittene technische Ausbildung für den modernen Softwareingenieur
Edocti Training

Design Patterns in modernem C++ (GoF)

Fortgeschritten
21 h
4.7 (91 Bewertungen)
Design Patterns in modernem C++ (GoF)

Design Patterns in modernem C++: "Gang-of-Four" und moderne Idiome für robustes C++‑Design anwenden.

Hands‑on mit klassischen Erzeugungs‑, Struktur‑ und Verhaltensmustern.

C++11/14/17‑Features nutzen, um Implementierungen zu vereinfachen und zu modernisieren.

Praktische Erfahrung sammeln durch Labs mit Refactoring und Erweiterbarkeit.

Nutzen: Wartbarkeit, Lesbarkeit und Skalierbarkeit von C++‑Anwendungen verbessern.

Für wen: gedacht für Personen mit C++‑Kenntnissen, die besseres Design suchen.

Mit optionalem Teil zu modernen Alternativen und Anti‑Patterns.

Curriculum

Tag 1 — Grundlagen & Creational Patterns
  • OOP-Recap, SOLID und wann Patterns helfen vs. schaden
  • 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 für Patterns (class, object, relationships)
  • Factory Method — virtuelle Konstruktoren, Registries, unique_ptr-Returns
  • Abstract Factory — Produktfamilien, Objektgraphen, Dependency Injection
  • Builder — fluente APIs, Immutability, Invarianten aufbauen
  • Prototype — klonen polymorpher Objekte; Copy/Move Semantics; deep vs. shallow copy
  • Singleton — Testbarkeit, Threading, Alternativen (Object Lifetime, DI-Container)
Tag 2 — Structural Patterns
  • Adapter — Object vs. Class Adapter; Ranges-stil Adapter; Type Erasure
  • Facade — stabile API über Subsysteme; PIMPL zur Reduktion von Rebuilds
  • Proxy — Remote/Virtual/Protection; Lazy Loading; Caching
  • Decorator — Composition over Inheritance; Value- vs. Referenzsemantik
  • Composite — Bäume; Iteratoren und Visitoren; Value Categories
  • Flyweight — Intern-Pools; String Views; Arena Allocators
  • Bridge — orthogonale Dimensionen; ABI-Stabilität; Policy-based Design
Tag 3 — Behavioral Patterns & Refactoring
  • Strategy — statisch (Templates/Policies) vs. dynamisch (Type Erasure/Variant)
  • Observer — Thread-Safety, lockfreie Queues; Signals/Slots vs. Callbacks
  • Command — Undo/Redo, Makro-Commands; Function Objects und Lambdas
  • State — Table-driven vs. State Pattern; Variant + visit; Übergangssicherheit
  • Template Method — CRTP-Alternativen; Non-virtual Interface (NVI)
  • Iterator — Custom Iteratoren, Ranges; Coroutines als Generatoren (Überblick)
  • Mediator — Entkopplung komplexer Interaktionen; Event Bus
  • Memento — Snapshot-Strategien; Serialisierungsoptionen
  • Chain of Responsibility — Pipelines; Fehlerbehandlung mit expected/variant
  • Interpreter — Embedded DSLs; Parser-Optionen
  • Visitor — Acyclic Visitor; std::variant visitation & Pattern Matching
  • Anti-Patterns & Smells — Shotgun Surgery, Train Wreck, God Object
  • Refactoring-Lab — von Ad-hoc-Code zu klaren Patterns; Wirkung messen

Optionale Module

Optional — Concurrency & Async
  • Active Object und Reactor (konzeptionell) mit std::jthread und Executors
  • Coroutines für asynchrone Flüsse; Cancellation und Timeouts (High Level)

Kursablauf

  • 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