Edocti
Training tehnic avansat pentru inginerul software de mâine
Edocti Training

Design Patterns în Modern C++ (GoF)

Avansat
21 h
4.7 (91 recenzii)
Design Patterns în Modern C++ (GoF)

Design Patterns în Modern C++: aplici GoF și idiomuri moderne pentru un design robust în C++.

Hands‑on cu pattern‑uri clasice de creare, structurale și comportamentale.

Valorifici C++11/14/17 pentru a simplifica și moderniza implementările.

Dobândești experiență practică prin laboratoare de refactoring și cod extensibil.

Cum te ajută: îmbunătățești mentenabilitatea, lizibilitatea și scalabilitatea aplicațiilor C++.

Cui i se adresează: conceput pentru persoane cu cunoștințe C++ care caută design mai bun.

Include opțional alternative moderne și anti‑patterns.

Curriculum

Ziua 1 — Fundamente & Creational patterns
  • Recap OOP, SOLID și când pattern-urile ajută vs. încurcă
  • 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 esențial pentru pattern-uri (class, object, relationships)
  • Factory Method — „virtual constructors”, registries, return de unique_ptr
  • Abstract Factory — familii de produse, object graphs, dependency injection
  • Builder — API-uri fluente, imutabilitate, asamblarea invariantelor
  • Prototype — clonare de obiecte polimorfice; copy/move semantics și deep vs. shallow copy
  • Singleton — probleme de testare, threading, alternative (object lifetime, DI containers)
Ziua 2 — Structural patterns
  • Adapter — object vs. class adapter; adaptori în stil ranges; type erasure
  • Facade — API stabil peste subsisteme; PIMPL pentru reducerea rebuild-urilor
  • Proxy — remote/virtual/protection; încărcare leneșă; caching
  • Decorator — composition over inheritance; semantică pe valoare vs. referință
  • Composite — arbori; iterators și visitors; categorii de valoare
  • Flyweight — „intern” pools; string views; arena allocators
  • Bridge — dimensiuni ortogonale; stabilitate ABI; policy-based design
Ziua 3 — Behavioral patterns & refactoring
  • Strategy — static (templates/policies) vs. dynamic (type erasure/variant)
  • Observer — thread-safety, cozi lock-free; signals/slots vs. callbacks
  • Command — undo/redo, macro commands; function objects și lambdas
  • State — „table-driven” vs. State pattern; variant + visit; siguranța tranzițiilor
  • Template Method — alternative CRTP; non-virtual interface (NVI)
  • Iterator — iteratoare custom, ranges; coroutines ca generators (overview)
  • Mediator — decuplarea interacțiunilor complexe; event bus
  • Memento — strategii de snapshot; opțiuni de serializare
  • Chain of Responsibility — pipelines; tratarea erorilor cu expected/variant
  • Interpreter — DSL-uri embedded; opțiuni de parsare
  • Visitor — „acyclic visitor”; std::variant visitation & pattern matching
  • Anti-patterns & smells — „shotgun surgery”, „train wreck”, „god object”
  • Lab de refactoring — din cod ad-hoc către pattern-uri clare; măsurarea impactului

Module opționale

Opțional — Concurrency & async
  • Active Object și Reactor (conceptual) cu std::jthread și executors
  • Coroutines pentru fluxuri async; cancelare și timeouts (nivel înalt)

Structura zilei de curs

  • 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