13
Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih ra čunarskih struktura 1 Ključni dizajn šabloni koji se koriste u Androidu

Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 3: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 4: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

Fasada - Primer

2020 4

Page 5: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 6: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

Dekorator – Primer/pristup 1

2020 6

Page 7: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

Dekorator – Pristup/nasleđivanje

2020 7

Page 8: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

Dekorator – Pristup/nasleđivanje 2

Vegie with bacon?

2020 8

Page 9: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 10: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

Dekorator - Implementacija

2020 10

Page 11: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 12: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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

Page 13: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · Strukturni šabloni olakšavaju upotrebu i sprezanje programskih komponenti Povećavaju ponovno korišćenje komponenti

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