Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:design-patterns-part-two [2025/12/03 02:50]
florian_luis.micu [Observer]
poo-ca-cd:laboratoare:design-patterns-part-two [2025/12/03 02:54] (current)
florian_luis.micu [Exemplu complet varianta simplă]
Line 20: Line 20:
  
  
-======Builder======+======👷 Builder======
  
 **Builder** este un **creational design pattern** folosit când ai obiecte complexe, cu **multe câmpuri opționale** sau **pași de inițializare diferiți**. El separă construcția obiectului de reprezentarea lui, astfel încât același proces de construire poate genera obiecte diferite. **Builder** este un **creational design pattern** folosit când ai obiecte complexe, cu **multe câmpuri opționale** sau **pași de inițializare diferiți**. El separă construcția obiectului de reprezentarea lui, astfel încât același proces de construire poate genera obiecte diferite.
Line 293: Line 293:
 =====Exemplu complet varianta simplă===== =====Exemplu complet varianta simplă=====
  
-Există o variantă mai simplă a acestui pattern care folosește o clasă internă și pe care o veți folosi mai des în proiectele voastre:+Există o variantă ​**mai simplă** a acestui pattern care folosește o clasă internă și pe care o veți folosi mai des în proiectele voastre:
  
 <code java> <code java>
Line 365: Line 365:
  
 <note tip> <note tip>
-Este **mult mai ușor să scrieți** și, mai important, **să citiți** acest cod. La fel ca în cazul constructorului,​ putem verifica parametrii trecuți pentru orice încălcare,​ cel mai adesea în cadrul metodei ''​build()''​ sau a metodei setter, și putem arunca ''​IllegalStateException''​ dacă există încălcări înainte de a crea o instanță a clasei.+  * Este **mult mai ușor să scrieți** și, mai important, **să citiți** acest cod. La fel ca în cazul constructorului,​ putem verifica parametrii trecuți pentru orice încălcare,​ cel mai adesea în cadrul metodei ''​build()''​ sau a metodei setter, și putem arunca ''​IllegalStateException''​ dacă există încălcări înainte de a crea o instanță a clasei
 +  * Vă încurajăm să **folosiți această versiune a pattern-ului Builder** și să recurgeți la varianta mai complexă doar dacă aveți nevoie de mai mulți Builderi specifici.
 </​note>​ </​note>​
  
Line 582: Line 583:
   * În locul listei simple de observatori,​ în proiecte moderne se folosesc **API-uri reactive**: **java.util.concurrent.Flow** sau **RxJava** / **Project Reactor**, care permit **backpressure** și **stream-uri de evenimente mai complexe**.   * În locul listei simple de observatori,​ în proiecte moderne se folosesc **API-uri reactive**: **java.util.concurrent.Flow** sau **RxJava** / **Project Reactor**, care permit **backpressure** și **stream-uri de evenimente mai complexe**.
 </​note>​ </​note>​
-======Strategy======+======🎲 Strategy======
  
 Strategy este un **behavioral design pattern** care permite definirea unei **familii de algoritmi**,​ fiind **încapsulați** și **interschimbabili**. Strategy permite schimbarea comportamentului unui obiect în timpul execuției fără a modifica codul clientului care îl folosește. Strategy este un **behavioral design pattern** care permite definirea unei **familii de algoritmi**,​ fiind **încapsulați** și **interschimbabili**. Strategy permite schimbarea comportamentului unui obiect în timpul execuției fără a modifica codul clientului care îl folosește.
Line 756: Line 757:
 În aplicații **Spring** sau **Quarkus**,​ Strategy este folosit în **bean-uri**,​ pentru a schimba comportamentul fără a modifica clientul. În aplicații **Spring** sau **Quarkus**,​ Strategy este folosit în **bean-uri**,​ pentru a schimba comportamentul fără a modifica clientul.
 </​note>​ </​note>​
-======Command======+======🎮 Command======
  
 Command este un **behavioral design pattern** folosit pentru a **încapsula o solicitare** sau o **acțiune** ca un obiect. Acest pattern permite **parametrizarea** obiectelor cu diferite acțiuni, **stocarea** cererilor și **posibilitatea de a le executa mai târziu**, inclusiv să le **anulezi** sau să le **refaci**. Command este un **behavioral design pattern** folosit pentru a **încapsula o solicitare** sau o **acțiune** ca un obiect. Acest pattern permite **parametrizarea** obiectelor cu diferite acțiuni, **stocarea** cererilor și **posibilitatea de a le executa mai târziu**, inclusiv să le **anulezi** sau să le **refaci**.
Line 987: Line 988:
 Pattern-ul Command este foarte folosit în aplicații enterprise moderne cu **RabbitMQ**,​ **Kafka** sau **task queues**, unde „comanda” devine un mesaj. Pattern-ul Command este foarte folosit în aplicații enterprise moderne cu **RabbitMQ**,​ **Kafka** sau **task queues**, unde „comanda” devine un mesaj.
 </​note>​ </​note>​
-======Tips & Tricks Design Patterns======+======🪄 Tips & Tricks Design Patterns======
  
 =====Comparare între Design Patterns===== =====Comparare între Design Patterns=====
poo-ca-cd/laboratoare/design-patterns-part-two.1764723039.txt.gz · Last modified: 2025/12/03 02:50 by florian_luis.micu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0