Differences

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

Link to this comparison view

poo:breviare:breviar-12 [2026/01/12 08:06]
george.tudor1906 [Breviar Laborator 09 – Genericitate. Design Patterns 2]
poo:breviare:breviar-12 [2026/01/12 08:16] (current)
george.tudor1906 [2. Decorator]
Line 1: Line 1:
  
-===== Breviar ​Laborator ​12 – Genericitate. Design Patterns 2 ===== +===== Breviar 12 =====
 ==== 1. Genericitate ==== ==== 1. Genericitate ====
  
Line 258: Line 257:
 WeaponSilencer ce implementează interfața de bază a armelor și are un obiect de tip WeaponSilencer ce implementează interfața de bază a armelor și are un obiect de tip
 armă intern. În metoda fire, în decorator, setați eventual sunetul jocului mai încet. armă intern. În metoda fire, în decorator, setați eventual sunetul jocului mai încet.
 +
 +{{:​poo:​breviare:​img1.jpg?​600|}}
  
 === 2.2 Exemplu cu fluxuri Java === === 2.2 Exemplu cu fluxuri Java ===
Line 274: Line 275:
 === 2.3 Structura Decorator === === 2.3 Structura Decorator ===
  
-Mapând pe diagramă+{{:poo:​breviare:​img2.jpg?​600|}} 
-  * **FileOutputStream** joacă rolul de componentă concretă + 
-  * **PrintWriter****OutputStreamWriter** și **CipherOutputStream** joacă rolul de decoratoare concrete+**Participanți:​** 
 +  * **Component** - definește interfața pentru obiectele care pot avea responsabilități adăugate dinamic (metoda Operation()) 
 +  * **ConcreteComponent** - definește un obiect căruia i se pot adăuga responsabilități suplimentare 
 +  ​* **Decorator** - menține o referință către un obiect Component ​și definește o interfață conformă cu interfața lui Component (delegă apelul către component->​Operation()) 
 +  ​* **ConcreteDecoratorA** - adaugă stare suplimentară (addedState) componentei 
 +  * **ConcreteDecoratorB** - adaugă comportament suplimentar (AddedBehavior()) și apelează Decorator::​Operation()
  
 <note important>​ <note important>​
Line 282: Line 288:
 o componentă concretă, construcția nu va funcționa. o componentă concretă, construcția nu va funcționa.
 </​note>​ </​note>​
- 
-=== 2.4 Diagrama UML === 
- 
-  Component (interfață/​abstractă) 
-       ^ 
-       | 
-  +-----------+------------------+ 
-  |                              | 
-  ConcreteComponent ​        ​Decorator (abstractă) 
-                                 ^ 
-                                 | 
-                    +------------+------------+ 
-                    |                         | 
-              ConcreteDecoratorA ​       ConcreteDecoratorB 
- 
-  * **Component** - interfața comună 
-  * **ConcreteComponent** - implementarea de bază (ex: BasicIceCream,​ FileOutputStream) 
-  * **Decorator** - clasă abstractă care ține o referință la Component 
-  * **ConcreteDecorator** - adaugă funcționalitate (ex: Chocolate, Vanilla, CipherOutputStream) 
  
poo/breviare/breviar-12.1768197962.txt.gz · Last modified: 2026/01/12 08:06 by george.tudor1906
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