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

Design Patterns în Modern Java (GoF)

Intermediar
21 h
4.8 (63 recenzii)

Sesiuni programate

Nu există sesiuni disponibile în acest moment.
Design Patterns în Modern Java (GoF)

Design Patterns în Java Modern: Stăpânește arhitecturile Gang of Four (GoF) și implementează-le folosind sintaxa și funcționalitățile moderne din Java 8-21.

Lucrează hands‑on cu toate categoriile majore de pattern-uri: creaționale, structurale și comportamentale.

Învață cum să valorifici concepte precum Streams, Lambda expressions, Records și Functional Interfaces pentru a moderniza și curăța codul moștenit.

Dobândești experiență practică: ~70% din timp este alocat laboratoarelor de refactoring și construirii de proiecte modularizate și extensibile.

Cum te ajută acest curs: Îmbunătățești dramatic mentenabilitatea, testabilitatea, lizibilitatea și scalabilitatea aplicațiilor tale Java.

Cui i se adresează: Dezvoltatorilor Java care doresc să scrie cod curat (Clean Code) și să avanseze către roluri de Software Architect.

Agenda include un modul opțional despre injecția de dependențe (Spring/CDI) și identificarea anti-pattern-urilor.

Abilități dobândite

GoF Design Patterns Creational Patterns Structural Patterns Behavioral Patterns Code Refactoring Java Modern (8-21) Interfețe Funcționale Arhitectură & Testare

Curriculum

Ziua 1 — Fundamente & Creational

  • Modern Java pentru patterns: records, sealed classes, pattern matching (instanceof/switch), var, modules (JPMS)
  • Generics și variance; imutabilitate; equals/hashCode/toString; bune practici Optional
  • Factory Method — intent, UML, implementare TDD; variantă cu switch pe enum; pattern matching switch
  • Abstract Factory — familii de obiecte; compoziție vs. reflection; conectare prin modules
  • Builder — fluent API; obiecte imuabile cu records; validare și staged builders
  • Prototype — strategii de copiere; deep vs. shallow; copy constructors vs. serialization; records & withers
  • Singleton — enum-based, lazy holder; testare și lifecycle; evitarea stării globale ascunse

Ziua 2 — Structural

  • Adapter — class vs. object adapters; maparea API-urilor legacy; default methods ca adaptoare
  • Bridge — decuplarea abstracție/implementare; când preferăm compoziția
  • Composite — tratament unitar al part/whole; variante safe vs. transparent; iterare cu streams
  • Decorator — stratificarea comportamentului; diferențe vs. moștenire; records pentru decoratori mici
  • Facade — simplificarea subsistemelor; granițe de modul și trucuri de vizibilitate în package
  • Flyweight — partajare memorie; interning; value-based classes; capcane cu mutabilitatea
  • Proxy — static vs. dynamic proxies; caching, securitate, remote; virtual proxy cu lazy loading

Ziua 3 — Behavioral & Concurrency

  • Strategy — înlocuirea condiționalelor; lambdas/functional interfaces; compunere de strategii
  • Template Method — hooks vs. default methods; când îl înlocuim cu Strategy
  • State — ierarhii sealed pentru stări explicite; tabele de tranziții
  • Chain of Responsibility — pipelines; rezultate Optional/Try-like; lanțuri bazate pe streams
  • Command — undo/redo; cozi și audit logging; obiecte command funcționale
  • Observer — Flow API/Reactive Streams; property change; noțiuni de backpressure
  • Mediator — reducerea cuplării în GUI/module; event bus
  • Iterator — Iterable vs. Stream; colectare și lazy; Spliterator custom
  • Memento — snapshot-uri cu records; hooks pentru persistență
  • Visitor — ierarhii sealed; pattern matching switch; alternative la double-dispatch
  • Interpreter — mini DSL-uri; parsing cu pattern matching; când preferăm combinatoare
  • Addendum de concurență — executors vs. virtual threads; CompletableFuture; structured concurrency (concepte)

Module opționale

Opțional — Arhitecturi & testare

  • Dependency Injection (Jakarta CDI/Spring) — relația cu patterns (Factory, Strategy, Facade)
  • Hexagonal/Ports & Adapters; straturi și granițe de modul (JPMS)
  • Testarea pattern-urilor cu JUnit 5; test doubles; approval tests pentru refactorizări

Structura zilei de curs

  • Partea 1: 09:00–10:30
  • Pauză: 10:30–10:45
  • Partea 2: 10:45–12:15
  • Pauză de prânz: 12:15–13:15
  • Partea 3: 13:15–15:15
  • Pauză: 15:15–15:30
  • Partea 4: 15:30–17:30

Ai participat la acest curs?

Opinia ta este foarte importantă pentru noi. Spune-ne cum a fost experiența ta și ajută-ne să îmbunătățim acest curs pentru viitorii participanți.

Ofera feedback

Vrei să afli mai multe? Suntem aici să te ajutăm!

Sau scrie-ne direct la training@edocti.com.