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