Sunteți pe pagina 1din 4

MINISTERUL EDUCAŢIEI, CULTURII și CERCETĂRII al REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ a MOLDOVEI


FACULTATEA CALCULATOARE, INFORMATICĂ și MICROELECTRONICĂ
DEPARTAMENTUL INGINERIA SOFTWARE și AUTOMATICĂ

RAPORT la lucrarea de laborator Nr. 4


Disciplina: Tehnici si Mecanisme de Proiectare Software
TEMA: Sablonul de proiectare DECORATOR

Elaborat: st. gr. TI-171 Iepuras Daniel


Verficat: conf. univ. Scrob Sergiu

Chișinău – 2020
Definitie

Sablonul Decorator este un model de proiectare conceput pentru a conecta dinamic


comportamentul suplimentar la un obiect. Modelul Decorator oferă o alternativă
flexibilă la practica subclasării pentru a extinde funcționalitatea.

Structura

Participanti

Component (LibraryItem)
definește interfața pentru obiecte care pot avea responsabilități adăugate dinamic
acestora.
ConcreteComponent (Book, Video)
definește un obiect căruia îi pot fi atașate responsabilități suplimentare.
Decorator (Decorator)
menține o referință la un obiect Component și definește o interfață conformă cu
interfața Componentului.
ConcreteDecorator (Borrowable)
adaugă responsabilități componentei.
Realizare

Sa presupunem ca ne intalnam cu urmatoarea problema: unelor campionate create le


pot fi atribuite unele detalii obtionale, ca de exemplu , campionatul local care se va
petrece in Chisinau va permite participarea unui club dintr-un oras din apropiere.
Pentru asta vom avea metoda getInfo() care se va utiliza pentru a enumera optiunile
suplimentare.

abstract class Tournament{


String name = "Unnamed Tournament";

public String getInfo(){


return name;
}

class localTournament extends Tournament{


public localTournament(){
name = "localTournament";
}

Clasa localTournament este mostenita de la clasa de baza Tournament.


Acum ne dorim decorarea clasei localTournament cu un club nou care va participa la
campionat

class newClub extends Decorator{


Tournament tournament;

public newClub(Tournament tournament){


this.tournament = tournament;
}

public String getInfo() {


return tournament.getInfo() + " + newClubName";
}

In constructorul clasei noi trimitem obiectul Tournament iar in metoda getInfo()


adaugam denumirea clubului optional care va participa.
Concluzie

In concluzie pot spune ca sablonul Decorator este destul de simplu de implementat si


are o serie de plusuri. Ca un plus principal , as dori sa mentionez capacitatea de a
conecta dynamic functionalitatile noi la obiecte. Din aceasta cauza, Java foloseste pe
scara larga acest model in clasele de I/O.