-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDesignPatterns
91 lines (67 loc) · 4.72 KB
/
DesignPatterns
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# OBSERVER
Uloga Observer paterna je da uspostavi relaciju između objekata tako kada jedan objekat
promijeni stanje, drugi zainteresirani objekti se obavještavaju..
U sklopu EventPlannera Observer patern bi mogli iskoristiti kada klijent pristupa sistemu,
a ostalo je 5 ili manje dana do nekog dogadjaja koji je prethodno rezervisao.
Tako bi on dobio notifikaciju da se blizi njegov event i koliko tacno dana je ostalo do njega.
# STRATEGY
Uloga: Strategy patern izdvaja algoritam iz matične klase i uključuje ga u posebne klase.
Pogodan je kada postoje različiti primjenjivi algoritmi (strategije) za neki problem.
Strategy patern omogućava klijentu izbor jednog od algoritma iz familije algoritama za korištenje.
U nasem projektu Strategy patern je upotrebljen prilikom odabira vrste eventa, jer
za razlicite vrste eventa se ukljucuju razliciti filteri, tj. razliciti objekti i
usluge odgovaraju razlicitim vrstama dogadjaja te se pretrage medjusobno razlikuju.
# DECORATOR
Osnovna namjena Decorator paterna je da omogući dinamičko dodavanje novih elemenata i ponašanja (funkcionalnosti) postojećim
objektima. Objekat pri tome ne zna da je urađena dekoracija što je veoma korisno za iskoristljivost i ponovnu upotrebu
komponenti softverskog sistema.
U nasem projektu Decorator patern bi se mogao upotrijebiti za dodavanje novih mogucnosti pri rezervacijama.
Naprimjer, mogli bi dodati nove vrste dogadjaja kao sto su seminari, poslovne vecere i sl. ili cak nove vrste
ponuda kao sto su frizerske, make-up i slicne usluge.
# SINGLETON PATTERN(kreacijski pattern)
Osigurava da se klasa instancira samo jednom i globalan pristup kreiranoj instanci tj
korištenje kao jedinstven objekat.
Primjeri takvih klasa su thread pools (skupina niti), objekti koji upravljaju
setovanjem registara, objekti koji se koriste za logiranje, objekti koji se koriste
kao drajveri za razne uređaje kao što su printeri i grafičke
kartice. Singleton klasa neke klase se pravi tako što se doda privatan atribut Singleton
i nešto što vraća tu instancu. Sadrži jedan privatan konstruktor bez parametara što omogućava
jedinstvenost.
Pattern bi se iskoristio kod klase za rad sa bazom jer nam je potrebna samo jedna klasa u čitavom projektu.
# FACTORY METHOD(kreacijski pattern)
Ovdje podklase odlučuju koju klasu instancirati.
Različite podklase implementiraju interfejs na različit način.
Zavisno od parametara različito je i upravljanje.
Vrši se instantacija izvedene klase preko posebne metode FactoryMethod() na osnovu podataka korisnika.
Ona definira interfejs za kreiranje objekata ali ostavlja izbor tip njegovim izvedenim klasama.
U projektu je to iskorišteno na neki način kod pretrage npr i odlučivanja kojoj klasi pripada osoba tj da li je to Saradnik,
Korisnik ili Admin.
# PROTOTYPE PATTERN(kreacijski pattern)
Kod ovog patterna novi objekat se formira klonirajući neki od postojećih prototip instanci.
Ako je kreiranje novog objekta previše resursno zahtjevno vrši se kloniranje nekog koji već postoji.
Ovako se formiraju objekti koji se naknadno prilagode bez poznavanja detalja o tome kako je prvobitni
objekat formiran.
Načini na koji se pattern može primjeniti je površinski i dubinski.
Iskoristivost bi bila npr kod dobavljanja podataka iz baze najlakše bi bilo podatke
klonirati a ne stalno im pristupati.
# ABSTRACT FACTORY PATTERN
Ovaj pattern omogućava da se kreiraju familije povezanih objekata. Na
osnovu apstraktne familije produkata kreiraju se konkretne fabrike produkata
različitih tipova i različitih kombinacija. Patern odvaja definiciju (klase) produkata od
klijenta. Zbog toga se familije produkata mogu jednostavno izmjenjivati ili ažurirati bez
narušavanja strukture klijenta.
Iskoristivost ovog patterna u našem projektu se vidi u tome da imamo familije događaja -
različite vrste događaja - koji objedinjuju konkretne fabrike produkata - tj. konkretne objekte
koji nude usluge za datu familiju događaja. Npr. za familiju rođendani se kreiraju konkretni
objekti koji nude usluge organizacije rođendana.
# ITERATOR
Omogućava pristup elementima kolekcije sekvencijalno bez poznavanja interne strukture kolekcije.
Iskoristivost bi bila kad klijent pristupa listi generisanih objekata za datu vrstu eventa.
On ne poznaje internu strukturu kolekcije, ali ona odgovara njegovim zahtjevima za datu kolekciju.
# COMMAND
Ovaj pattern razdvaja klijenta koji zahtjeva operaciju i omogućava slanje zahtjeva
različitim primateljima.
Njegova primjena bi mogla biti prilikom otkazivanja rezervacije. Klijent šalje
zahtjev za otkazivanje, a sistem obavještava dati objekat o otkazivanju, sistem
za autorizaciju kartica ukoliko postoji mogućnost povratka novca, te aplikaciju
gdje se dati objekt označava kao slobodan u datom terminu.