![Page 1: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/1.jpg)
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Ključni dizajn šabloni koji se koriste u Androidu
![Page 2: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/2.jpg)
Šta su dizajn šabloni
U programiranju, dizajn šabloni su ponovljiva rešenja za probleme na koje iznova nailazimo tokom razvoja softvera, tj. koji se ponavljaju.
Predstavljaju razrađen pristup rešavanju tipičnih problema u raznim situacijama.
Treba ih razumeti/prihvatiti kao generičke koncepte.
Ne postoji „najbolji“ dizajn šablon – treba ih upoznati, kombinovati, učiti iz njih, unapređivati ih i prilagođavati potrebama.
Dizajn šabloni se mogu definisati i na nivou projekta, kao preporuka, ili izbor pristupa među različitim pristupima!
2020 2
![Page 3: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/3.jpg)
Generalne napomene
Šabloni nisu međusobno isključivi
Koriste i dopunjuju standardne mehanizme nasleđivanja, polimorfizma, interfejsa
Nekada mogu biti i zamena za nasleđivanje, interfejse
Treba ih evaluirati i tokom dizajna odlučiti da li i kako će se koristiti
o A nakon toga držati se tokom implementacije
Olakšavaju i imenovanje pojedinih softverskih komponenti
Terminologija koja olakšava komunikaciju
Smanjuju mogućnost grešaka
2020 3
![Page 4: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/4.jpg)
Grupe dizajn šablona
Stvaralački šabloni
o Fokusiraju se na probleme stvaranja logičkih entiteta, pri čemu sakrivaju detalje instanciranja
o Pokrivaju stvaranje, kompoziciju i predstavu objekata, nekada još i evidentiranje
Strukturni šabloni
o Pokrivaju probleme kompozicije složenijih logičkih entiteta upotrebom objekata i klasa
Šabloni ponašanja
o Pokrivaju algoritamske probleme, komunikaciju i raspodele odgovornosti među objektima.
2020 4
![Page 5: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/5.jpg)
Tipični dizajn šabloni
Stvaralački šabloni
o Singleton
o Factory
o Prototip
Strukturni šabloni
o Dekorator
o Adapter
o Fasada
Šabloni ponašanja
o MVC/MVP
o Sinhrono/asinhrono
2020 5
![Page 6: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/6.jpg)
Singleton dizajn šablon
Stvaralački dizajn šablon
Definicija
o Postojanje jedne (i samo jedne) instance koju koristi cela aplikacija
o Donekle slična globalnoj promenljivoj, predstavlja „globalno“ dostupnu tačku pristupa i sinhronizacije u širem opsegu
Tipične primene
o Logovanje, keširanje podataka, skup radnih niti, konfiguracija softvera, rukovanje kritičnim resursima
Najjednostavniji šablon u smislu dijagrama klasa
Može da zavara, obratiti pažnju na implementaciju
2020 6
![Page 7: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/7.jpg)
Singleton - Koncept
Sing
leton
SW Kompone
nta
SW Kompone
nta
SW Kompone
nta
2020 7
Više komponenti koristi („napada“) isti resurs
Postoji samo jedan primerak tog resursa
Ovakav šablon se jako često pojavljuje u softveru
![Page 8: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/8.jpg)
Singleton – Implementacija 1
2020 8
![Page 9: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/9.jpg)
Singleton – Implementacija 2
2020 9
![Page 10: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/10.jpg)
Singleton – Implementacija 3
2020 10
![Page 11: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/11.jpg)
Factory (Fabrika)
Spada među stvaralačke šablone
Definicija
o Sakriva detalje instanciranja objekata
o Stvaranje objekata je na osnovu parametra ili stanja
o Obezbeđuje dodatni nivo fleksibilnosti
Tipične primene
o Jedan od najviše korišćenih šablona u Javi
o Često se koristi za GUI (npr. teme)
o Ili kada postoje paralelni skupovi izmenljivih objekata
Napomene
o Bitno je da se logika kreiranja ne provlači kroz sistem, tj. da se ne manifestuje negde drugde u programu!
2020 11
Podsetnik:Abstract factory
![Page 12: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/12.jpg)
Factory - implementacija
2020 12
![Page 13: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/13.jpg)
Prototype
Stvaralački šablon
Definicija
o Objekti se stvaraju na osnovu postojećeg prototipa
o Prototip mora da poseduje mogućnost kloniranja koji je po pravilu brži od stvaranja nove instance
Tipična primena
o Koristi se kada je stvaranje objekata zahtevna operacija
o Npr. upiti u baze podataka
2020 13
![Page 14: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/14.jpg)
Prototype - implementacija
2020 14
![Page 15: Projektovanje namenskih računarskih struktura 1](https://reader031.vdocuments.net/reader031/viewer/2022012023/6169d28311a7b741a34bc065/html5/thumbnails/15.jpg)
Rezime
Dizajn šabloni su dobro poznata, ponovljiva rešenja
Predstavljaju moćan alat, ukoliko se ispravno koriste – a to zahteva njihovo poznavanje
Mogu se kombinovati sa OO principima i drugim šablonima
Stvaralački šabloni se koriste da se sakriju nepotrebni detalji stvaranja (nekada i uništavanja ili reciklaže) programskih objekata
Detalji se sakrivaju sa ciljem
o Lakše upotrebe komponente
o Univerzalnosti sprege
o Kasnije evolucije i optimizacije softvera
o Modelovanje ponašanja dela softvera
2020 15