Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Ključni dizajn šabloni koji se koriste u Androidu
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 2
Fasada dizajn šablon
Strukturni dizajn šablon
Definicija
o Sakrivanje unutrašnje kompleksnosti
o Obezbeđivanje jednostavne spoljašnje sprege
o Donekle slična apstrakciji/interfejsu
Tipične primene
o Obezbeđivanje jednostavnije sprege ukoliko nije u pitanju nasleđivanje ili agregacija
Po pravilu sadrži i dodatnu logiku
Veoma bitno rukovanje greškama i upravljanje konzistentnošću sistema!
2020 3
Fasada - Primer
2020 4
Dekorator dizajn šablon
Definicija
o Dinamično dodavanje osobina postojećim objektima bez promene izvornog koda
o Može biti zamena za nasleđivanje – ali tokom izvršavanja, ne tokom prevođenja
Tipične primene
o Prikaz u zavisnosti od sadržaja, rukovanje većim brojem različitih kombinacija
Obratiti pažnju na dizajn i implementaciju: može da značajno skrati implementaciju, ali i da zakomplikuje ukoliko se ne koristi kako treba (engl. corner case, future proof)
2020 5
Dekorator – Primer/pristup 1
2020 6
Dekorator – Pristup/nasleđivanje
2020 7
Dekorator – Pristup/nasleđivanje 2
Vegie with bacon?
2020 8
Dekorator - Zapravo
Dekoratori i treba da su istog tipa kao i klase koje dopunjuju.
Može da se koristi više dekoratora na istom objektu – sukcesivno.
Polimorfizam omogućuje da se koristi dekorisani objekat umesto osnovnog
Dekorator svoje ponašanje može da primeni bilo pre ili posle osnovnog ponašanja dekorisanog objekta.
Dekorisanje se obavlja tokom izvršavanja programa.
2020 9
Dekorator - Implementacija
2020 10
Adapter dizajn šablon
Strukturni šablon
Definicija
o Prevazilaženje razlika između dve sprege/objekta
o Pretvara jednu spregu u drugu, bez puno logike
o Omogućuje saradnju dva objekta koji ne bi mogli inače da direktno sarađuju
Analogija sa adapterima za naponske priključke
Tipične primene
o Sprezanje sa socijalnim mrežama, korišćenje postojećeg programskog koda u novim okruženjima (setite se JNI)
o Npr biblioteke za reprodukciju multimedijalnog sadržaja
2020 11
Adapter - Primer
public interface ISocialNetworks {
bool Login(string username, string password);
bool Share(string content);
}
public interface IGoogleSocialNetworks
{
bool Authenticate(string uname, string password);
bool Post(string content);
}
2020 12
Rezime
Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti
Povećavaju ponovno korišćenje komponenti programa
Potencijalno predstavljaju pogodnija rešenja naspram ugrađenih mehanizama (npr. nasleđivanje)
Koriste se u kombinaciji sa drugim šablonima – dopunjuju ih
2020 13