t-4 dizajn paterni
TRANSCRIPT
-
T-4 Dizajn paterni
dr Zoran [email protected]
1
-
Sadraj
Uvod Singleton Facade Composite Command Template method Observer Adapter Prototype
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 2
-
Paterni u arhitekturi
Da li vas ova prostorija ispunjava oseajem prijatnosti?
Zato? Svetlo (smer) Proporcije Simetrija itd...
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 3
-
ta je dizajn patern? Dizajn patern
Reenje uestalog problema u dizajnu Abstrakuje strukturu dizajna koji se ponavlja Sastoji se od klasa i/ili objekata
Zavisnosti Strukture Interakcije Konvencije
Eksplicitno imenuje i specificira strukturu i dizajn Destilie iskustvo u dizajnu
4Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
ta je dizajn patern? Dizajn patern ima 4 osnovna dela:
Ime Problem Reenje Posledice
Jezika i implementaciona nezavisnost Mikro arhitektura Usklaenost sa postojeim metodologijama Nema mehanike primene
Programer mora prevesti reenje u konkretne pojmove u kontekstu aplikacije
5Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Zbog ega su nam potrebni dizajn paterni?
Viestruka upotreba znanja Problemi nisu uvek jedinstveni. Viestruko
korienje prethodnog iskustva moe biti korisno. Paterni nam daju savete gde da traimo
probleme. Uspostavljaju zajedniku terminologiju
Lake je rei: Ovde nam treba Facade . Obezbeuju vei stepen apstrakcije
Oslobaa nas potrebe za rad sa previe detalja u ranim fazama
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 6
-
Istorija dizajn paterna
Christopher AlexanderThe Timeless Way of BuildingA Pattern Language: Towns, Buildings, Construction
1970
1995
2007
Architecture
Object OrientedSoftware Design
Druge oblasti:HCI, Organizational Behavior,
Education, Concurent Programming
Gang of Four (GoF)Design Patterns: Elements of Reusable Object-Oriented Software
Mnogi autori
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 7
-
Struktura dizajn paterna*
Ime paterna i klasifikacija Saeto izlae sutinu.
Namena Kratak iskaz o tome ta patern radi.
Motivacija Scenario koji ilustruje problem projektovanja i
nain na koji strukture klasa i objekata u paternu reavaju taj problem.
Primenjivost Na koje situacije se patern moe primeniti.
*prema GoFIntro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 8
-
Struktura dizajn paterna*
Struktura Grafiki prikaz klasa u paternu.
Uesnici Klase i/ili objekti koji uestvuju u paternu kao i njihove
odgovornosti. Saradnja
Kako uesnici sarauju da bi izvrili svoje odgovornosti. Posledice
Koje su prednosti i nedostaci korienja paterna Implementacija
Saveti i tehnike za implementaciju paterna
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 9
-
Tri tipa GoF paterna prema nameni Creational (pravljenje) paterni:
Bave se postupkom inicijalizacije i konfigurisanja objekata. Structural (struktura) paterni:
Bave se sastavljanjem klasa i objekata. Behavioral (ponaanje) paterni:
Opisuju kako klase ili objekti meusobno utiu jedni na druge i kako dele odgovornosti.
10Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
SINGLETON
Gradivni paterni
11Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Singleton (unikat)Singelton patern obezbeuje da klasa ima samo jednu instancu i daje mu globalnu taku pristupa.
Primer: Kabinet predsednika je Singleton. Drava definie sredstva kojima se bira predsednik i ograniava pojam kabineta. Kao rezultat, moe postojati samo jedan aktivan predsednik u jednom vremenskom trenutku. Bez obzira na lini identitet, pojam Predsednik drave je globalna taka pristupa koja identifikuje osobu u kabinetu.
12Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Namena Obezbeuje da klasa ima samo jedan primerak i daje mu
globalnu taku pristupa.
ProblemZa neke klase je vano da imaju samo jednu instancu. Mada u sistemu moe da bude mnogo tampaa, trebalo bi da postoji samo jedan spuler za tampanje. Trebalo bi da postoji samo jedan sistem datoteka i jedan upravlja prozorima.
Singleton (unikat)
13Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Reenje Reenje je da se sama klasa uini odgovornom za
uvanje zapisa o svojoj sopstvenoj instanci. Klasa moe obezbediti da se ne moe kreirati druga
instanca (spreavanjem zahteva za kreiranje novih objekata), kao i nain za pristup kreiranoj instanci.
Koraci:1. Uiniti klasu objekta sa jedinstvenom instancom
odgovornom za kreiranje, inicijalizaciju i pristup.2. Deklarisati instancu kao privatnu statiku promenljivu.3. Obezbediti javnu statiku funkciju koja sadri sav
inicijalizacioni kod i obezbeuje pristup instanci.
Singleton (unikat)
14Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
PrimenljivostSingleton upotrebite kada: Treba da postoji tano jedan primerak neke klase i on mora
da bude dostupan sa dobro poznate take pristupa. Jedini primerak treba da se proiruje potklasama, a klijentima
treba omoguiti da koriste proireni primerak bez izmene postojeeg koda.
Singleton (unikat)
15Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Struktura
Saradnja Klijenti pristupaju paternu Singleton jedino putem njegove
operacije Instance().
Singleton (unikat)
16Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Posledice
Kontrolisani pristup jedinom objektu Smanjen prostor imena (nema globalnih
promenljivih u kojima se uvaju jedini primerci) Omoguava unapreivanje operacija i
predstavljanja Dozvoljava promenljivi broj primeraka Fleksibilniji od operacija klase
Singleton (unikat)
17Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
FACADE
Strukturni paterni
18Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Facade (Fasada) Robot ima etiri klase:
Camera (koja identifikuje objekte) Arm (ruka koja moe pomerati) Pillars (koji moe hvatati) Operator upravlja drugim klasama
Podsistem: mehanikaIntro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 19
-
Facade (Fasada)1. Koliko je potrebno operatoru u pogledu mehanike? 2. Na primer, ukoliko elimo da identifikujemo objekat i
pomerimo ga na odreenu lokaciju. Kod bi izgledao ovako:
Problem: Nema enkapsulacije Operator mora da zna puno: strukturu + ponaanje Preduslovi Spretnost
oldLocation = Camera.identify(object);Arm.move(oldLocation);Pliers.close();Arm.move(newLocation);Pliers.open();
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 20
-
Facade (Fasada)
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 21
-
Facade (Fasada)
Namena Obezbeuje jedinstveni interfejs za skup interfejsa jednog
podsistema. Facade definie interfejs vieg nivoa da bi se podsistem
lake koristio. Primenjivost
Koristite Facade u sledeim sluajevima Kada sloenom podsistemu hoete da date jednostavan interfejs. Kada hoete da raslojite podsisteme. Upotrebite Facade za
definisanje ulazne take za svaki nivo podsistema.
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 22
-
Primer
Facade (Fasada) - primerOperatori komuniciraju samo sa Facade klasom
Facade klasa poznaje i kontrolie objekte podsistema
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 23
-
Facade (Fasada) sistemski nivo
Enkapsulacija na viim nivoima: Opti paterni za
konstruisanje podsistema.
Svaki podsistem je predstavljen facade interfejsom.
Unutranji detalji su enkapsulirani.
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 24
-
Facade - Posledice
Dobre: Zaklanja komponente podsistema od klijenata i tako
smanjuje broj objekata sa kojima klijenti imaju posla, to olakava upotrebu podsistema.
Promovie slabo vezivanje izmeu podsistema i njegovih klijenata.
Podstie i olakava slojevitu arhitekturu. Loe:
Duplira metode. Slabija vidljivost funkcionalnosti podsistema.
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 25
-
COMPOSITE
Strukturni paterni
26Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Composite (Sastav) - problem
Fajlovi
Funkcije (delete, copy...)
Folderi
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 27
-
28
Composite (Sastav) - reenje Folder:
Za svaku akciju (delete, display, copy etc), postoji poseban tretman za fajlove i foldere.
Explorer: Svakim tipom
objekata se manipulie odvojeno.
Skalabilnost: Upravljanje veim
brojem elemenata (diskovi, CD, USB)
Primer
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
29
Composite (Sastav) - reenje
Primer
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
30
Composite: Struktura
Apstraktna osnovna klasa (Component) definie jedinstveno ponaanje.
Primitive i Composite klase su podklase. Composite definie ponaanje komponenti koje
imaju decu i uva komponente decu.
Ilustracija
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Composite: Posledice
Dobre Olakava dodavanje novih vrsta komponenti. Pojednostavljuje posao klijentu koji obino ne
znaju da li imaju posla sa listom ili sa sloenom komponentom.
Loe Moe da dovede do previe uoptenog dizajna,
ime se tee postavljaju ogranienja za komponente sastava.
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 31
-
Composite: Primeri korienja
Grafiki korisniki interfejs
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype 32
-
COMMAND
Paterni ponaanja
33Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) Enkapsulira zahtev kao objekat ime omoguava parametrizaciju
klijenata sa razliitim zahtevima, redovima za ekanje, ili zahtevima za formiranje dnevnika rada, i podrava operacije ije se dejstvo moe ponititi.
Konobar uzima narudbenicu, ili komandu od muterije i enkapsulira zahtev piui ga na formularu. Narudbenica (formular) se stavlja u red brzih jela. Formulari ne zavise od menija i stoga se mogu koristiti za podrku naruivanja razliitih jela.
34
Primer
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) Namena
Enkapsulira zahtev kao objekat ime omoguava parametrizaciju klijenata sa razliitim zahtevima, redovima za ekanje, ili zahtevima za formiranje dnevnika rada, i podrava operacije ije se dejstvo moe ponititi.
Poznat takoe kao Action (akcija), Transaction (transakcija)
Problem Potrebno je da prosleuje zahteve objekata bez ikakvog
znanja o operaciji koja se zahteva ili o primaocu zahteva
35Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - primer Meniji implementirani korienjem Command
Svaki izbor u Menu klasi je instanca MenuItem klase. Klasa Application kreira ove menije i njihove elemente kao i ostatak korisnikog interfejsa. Klasa Application takoe uva podatak o Document objektima koje je korisnik otvorio.
Klasa Application konfigurie svaki MenuItem korienjem instance konkretne Command podklase. Kada korisnik selektuje MenuItem, MenuItem poziva Execute na svojoj komandi, i Execute izvrava operaciju.
36Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - primer MenuItem ne zna koje podklase klase Command koristi.
Command podklase uvaju prijemnik zahteva i pozivaju jednu ili vie operacija na prijemniku
Na primer, PasteCommand podrava paste teksta sa klipborda u Document. Prijemnik PasteCommand klase je Document objekat. Execute operacija poziva Paste na primajuem Document objektu.
37Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - primenljivost
Command upotrebite u sledeim sluajevima: Kada hoete da parametrizujete objekte akcijom koju treba da
izvre, kao npr MenuItem. Takvu parametrizaciju moete u proceduralnom jeziku izraziti funkcijom za uzvraanje poziva, tj. funkcijom koja je negde registrovana da bi se kasnije pozivala.
Kada elite da navedete, poreate i izvrite zahteve u razliito vreme. Objekat Command moe da ima ivotni ciklus nezavisan od prvobitnog zahteva. Ako primalac zahteva moe da se predstavi na nain nezavistan od adresnog prostora, moete objekat komande za taj zahtev da prenesete drugom procesu i tamo izvrite zahtev.
38Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - primenljivost Kada hoete da podrite ponitavanje akcije. Kada hoete da podrite evidentiranje promena da bi
se one mogle ponovo primeniti u sluaju pada sistema. Ako interfejs Command proirite operacijama uitavanja i uvanja, moi ete da odrite trajnu evidenciju promena.
Ako elite da struktuirate sistem oko operacija vieg nivoa izgraenih od operacija na primitivnim objektima. Takva struktura je uobiajena kod informacionih sistema koji podravaju transakcije.
39Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - struktura
40Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - saradnja Klijent kreira ConcreteCommand objekat i definie njegove
prijemnike. Invoker objekat smeta ConcreteCommand objekat. Invoker izdaje zahtev pozivanjem Execute command objekta. Kada
su komande ponitive (undo), ConcreteCommand uva stanje za ponitavanje pre pozivanja Execute.
ConcreteCommand objekat poziva operacije na svom prijemniku da bi izvrio zahtev.
41Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Command (Komanda) - posledice
Komanda razdvaja objekat koji aktivira operaciju od objekta koji zna kako da je izvri.
Komande su objekti prvog reda. Njima se moe manipulisati i mogu se proirivati kao svaki drugi objekat.
Mogue je sakupiti komande u sloenu komandu.
Nove komande se lako dodaju poto ne morate da menjate postojee klase.
42Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
TEMPLATE METHOD
Paterni ponaanja
43Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
Template method (ablonski metod) Definie skelet algoritma u nekoj operaciji preputajui implementaciju nekih
koraka potklasi. Template metod dozvoljava da potklase redefiniu neke korake altoritma ne menjajui strukturu altoritma.
Graditelji kua koriste Template metod kada razvijaju novi ogranak. Tipian ogranak se sastoji od ogranienog broja planova spratova, sa razliitim varijantama za svaki plan sprata. Unutar plana sprata, osnova, okviri, vodovodne cevi i elektrina instalacija su identini za svaku kuu. Varijacije se uvode u kasnijim fazama konstrukcije da bi proizveli vei broj modela.
44
Primer
-
Template method
Namena Definie skelet algoritma u nekoj operaciji
preputajui implementaciju nekih koraka potklasi. Template metod dozvoljava da potklase redefiniu neke korake altoritma ne menjajui strukturu altoritma.
45Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method - problem
46
DoCreateDocument()
*
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method - struktura
47Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method - primenljivost Za impementiranje nepromenljivih delova algoritma na
jednom mestu i preputanje implementacije ponaanja koje se menja potklasama.
Kada ponaanje zajedniko za potklase treba izdvojiti i staviti u zajedniku klasu da bi se izbeglo dupliranje koda.
Za kontrolisanje proirivanja potklasa. Moete da definiete ablonski metod koji na odreenim takama poziva priljuene operacije i na taj nain doputa proirivanje samo u tim takama.
48Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method - saradnja
ConcreteClass se za implementiranje nepromenljivih delova algoritma oslanja na AbstractClass.
49Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method - posledice
Template method poziva sledee vrste operacija: Konkretne operacije (iz ConcreteClass ili klijentske
klase) Konkretne operacije AbstractClass klase Primitivne operacije (tj. Apstraktne operacije) Proizvodne metode Prikljune operacije obezbeuju podrazumevano
ponaanje koje potklase mogu po potrebi da proire. Priljuena operacija esto podrazumevano nita ne radi.
50Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Template method srodni paterni
Template metod paterni esto pozivaju Factory metod paterne.
Template metod paterni koriste nasleivanje za menjanje delova algoritma. Strategy paterni koriste delegiranje za menjanje celog algoritma.
51Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
OBSERVER
Paterni ponaanja
52Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer (posmatra) Definie zavisnost jedan prema vie meu objektima da bi
prilikom promene stanja jednog objekta svi zavisni objekti bili obaveteni i automatski aurirani.
Neke aukcije demonstriraju ovaj patern. Svaki ponua poseduje tablu sa brojem koju koristi da nagovesti ponudu. Aukcionar poinje ponudu, i posmatra kada se tabla podigne kao prihvatanje ponude. Prihvatanje ponude menja cenu ponude, to se saoptava svim ponuaima u formi nove ponude.
53Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer Namena
Definie zavisnost jedan prema vie meu objektima da bi prilikom promene stanja jednog objekta svi zavisni objekti bili obaveteni i automatski aurirani.
Takoe poznat kao: Zavisnici (Dependents), izdavanje-pretplata (publish-subscribe)
Problem Kako upravljati zajednikim sporednim efektom (npr. potreba za
odravanjem konzistentnosti izmeu povezanih objekata) podele sistema u kolekciju kooperirajuih klasa bez vrstog spajanja klasa, - to smanjuje mogunost ponovne upotrebe klasa.
54Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
a=50%b=30%
c=20% itd.subjekat
Promena obavetenja
zahtev, modifikacija
55
Observer - ilustracija
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer - reenje
Observer patern opisuje kako uspostaviti ove relacije.
Kljuni objekti u ovom paternu su subjekat i posmatra. Subjekat moe imati bilo koji broj zavisnih posmatraa. Svi posmatrai se obavetavaju kada subjekat promeni
stanje. Na osnovu toga svaki posmatra e zatraiti od subjekta
da sinhronizuje svoje stanje sa njegovim.
56Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer - primenljivost Kada apstrakcija ima dva aspekta od kojih jedan zavisi
od drugoga. Enkapsuliranje tih aspekata u zasebne objekte omoguava njihovo nezavisno menjanje i viekratnu upotrebu.
Kada promena u jednom objektu zahteva promene u drugim objektima, a ne znate koliko drugih objekata treba promeniti
Kada objektu treba omoguiti da obavetava druge objekte bez ikakve pretpostavke o tome koji su to objekti. Drugim reima, kada ne elite da ti objekti budu tesno vezani.
57Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer - struktura
58
*
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer - saradnja ConcreteSubject obavetava posmatrae kad god doe
do promene zbog koje bi stanje posmatraa postalo nekonzistentno sa njegovim.
Kada dobije informaciju o promeni konkretnog subjekta, objekat ConcreteObserver moe subjektu da poalje upit za informacije. ConcreteObserver koristi te informacije za usklaivanje svog stanja sa stanjem subjekta
59Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer - posledice
Apstraktno vezivanje subjekta i posmatraa Podrka za difuznu (broadcast) komunikaciju Neoekivana auriranja (posmatrai ne znaju
jedan za drugoga pa ne oekuju promenu stanja)
60Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Observer srodni paterni
Mediator Enkapsuliranjem sloene semantike auriranja, ChangeManager slui kao posrednik izmeu subjekata i posmatraa
Singleton ChangeManager moe da upotrebi uzorak Singleton da bi bio jedinstven i globalno dostupan.
61Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
ADAPTER
Strukturni paterni
62Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter
Konvertuje interfejs klase u drugi interfejs koji klijenti oekuju. Adapter omoguava saradnju klasa koje inae ne bi mogle da sarauju zbog nekompatibilnih interfejsa.
Nasadni klju (gedora) je primer Adaptera. Nastavci se postavljaju na nasadni klju. Ameriki standardi su 1/2" i 1/4". Oigledno da 1/2 nastavci ne mogu biti montirani na 1/4 klju, pa je potrebno koristiti adapter.
63Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter Namena
Konvertuje interfejs klase u drugi interfejs koji klijenti oekuju. Adapter omoguava saradnju klasa koje inae ne bi mogle da sarauju zbog nekompatibilnih interfejsa.
Takoe poznat kao: Wrapper (uvija)
64Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - problem Editor za crtanje (DrawingEditor) omoguava korisnicima
da crtaju i rasporeuju grafike elemente. TextShape se znatno tee implementira, pa je korisno iskoristiti postojei tekst editor (TextView) koji nije projektovan u skladu sa klasama Shape.
65Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - reenje Jedan nain reavanja problema je da se napravi klijentska klasa
(TextShape) koja e adaptirati editor (TextView) i modifikovati interfejs da odgovara aplikaciji. Ovo se moe uraditi na dva naina:- Dodatnim izvoenjem TextView klase ili- uvanjem reference na TextView klasu unutar TextShape klase.
Drugi metod ima prednost nad prvim jer se klijentska hijerarhija ne poveava u dubinu
66Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - primenjivost Koristite Adapter kada:
Hoete da upotrebite postojeu klasu, a njen interfejs nije usklaen sa interfejsom koji vam treba,
Hoete da napravite viekratno upotrebljivu klasu koja sarauje sa nepovezanim i nepredvienim klasama, tj. sa klasama koje mogu da imaju nekompatibilne interfejse,
Treba da koristite nekoliko postojeih klasa, ali nije praktino da prilagoavate njihove interfejse pravei potklase svakog od njih. Objektni adapter moe da prilagodi interfejs roditeljske klase.
67Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - struktura
68Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter saradnja
Klijenti pozivaju operacije klase Adapter. Zatim adapter poziva operacije klase Adaptee koje izvravaju zahtev.
69Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - posledice Klasni i objektni adapteri nemaju iste mane. Klasni adapter:
Prilagoava Adaptee klasu klasi Target vezivanjem za konkretnu Adaptee klasu. Zbog toga klasni adapter ne funkcionie ako hoemo da prilagodimo klasu i sve njene podklase.
Omoguava adapteru da izmeni odreena ponaanja klase Adaptee, s obzirom da je Adapter podklasa klase Adaptee.
Uvodi samo jedan objekat, i nikakvo dodatno preusmeravanje pointera nije potrebno da bi se dolo do Adaptee klase.
70Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter - posledice
Objektni adapter: Omoguava da jedan adapter radi sa vie Adaptee
objekata, tj. sa Adaptee i njegovim podklasama. Adapter moe takoe dodati funkcionalnost svim Adaptee instancama odjednom.
Tee je redefinisanje ponaanja Adaptee klase. To bi zahtevalo definisanje Adaptee podklase i povezivanje Adaptera sa njegovim podklasama a ne sa samim Adaptee klasama.
71Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Adapter povezani paterni
Bridge je po strukturi slian adapteru objekata ali ima drugaiju namenu. On je zamiljen da razdvoji interfejs od njegove implementacije da bi se oni menjali lako i nezavisno.
Decorator unapreuje drugi objekat bez izmene njegovog interfejsa, pa je zato transparentniji za aplikaciju od adaptera.
72Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
PROTOTYPE
Gradivni paterni
73Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
KloniranjeKloniranje
74
Prototype (prototip)
Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype Odreuje vrste objekata koji se prave koristei prototipski
primerak i pravi nove objekte kopiranjem tog prototipa. Prototipovi novih proizvoda se esto izrauju pre pune
proizvodnje, ali u ovom primeru prototip je pasivan i ne uestvuje u kopiranju samog sebe. Deoba elija, koja rezultuje u dobijanju dve identine elije, je primer kako prototip igra aktivnu ulogu u kopiranju samog sebe i demonstrira Prototype patern. Kada se elija deli, dobijaju se dve identine elije. Drugim reima elija klonira samu sebe.
75Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype
Namena Odreuje vrste objekata koji se prave koristei
prototipski primerak i pravi nove objekte kopiranjem tog prototipa.
76Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - problem Okruenje u primeru obezbeuje apstraktnu klasu Graphic za
grafike komponente, npr. beleke i note. Osim toga, ona obezbeuje apstraktnu klasu Tool za definisanje alata poput onih u paleti.
Okruenje takoe definie GraphicTool podklasu za alate koji kreiraju instance grafikih objekata i dodaje ih u dokument.
77Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - problem GraphicTool klasa pripada okruenju dok su alati za beleke i note
specifini u naoj aplikaciji. GraphicTool ne zna kako da kreira instance naih muzikih klasa. Mogli bismo da napravimo podklase GraphicTool za svaku vrstu muzikog objekta, ali tako bi nastalo mnogo podklasa koje bi se razlikovale samo po vrsti muzikog objekta koji instanciraju. Sastavljanje objekata je fleksibilna alternativa za potklase.
78Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - reenje Reenje je da se natera klasa GraphicTool da pravi nov
objekat klase Graphic kopiranjem ili kloniranjem neke instance potklase klase Graphic. Tu instancu nazivamo prototipom. Klasa GraphicTool se parametrizuje prototipom koji treba da klonira i doda u dokument.
79Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - primenjivost Prototype treba da se koristi kada sistem ne sme da
zavisi od toga kako se njegovi proizvodi prave, sastavljaju i predstavljaju,
Kada se klase koje treba instancirati odreuju u vreme izvravanja, na primer dinamikim uitavanjem
80Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - struktura
81Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - saradnja
Klijent zahteva od prototipa da se klonira
82Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype - posledice
Dodavanje i uklanjanje proizvoda u vreme izvravanja
Odreivanje novih objekata menjanjem vrednosti Odreivanje novih objekata menjanjem strukture Smanjivanje broja podklasa Dinamiko konfigurisanje aplikacije klasama
83Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Prototype srodni uzorci
Prototype i Abstract factory su na neki nain konkurentski uzorci, ali se mogu koristiti i zajedno.
Projekti u kojima se dosta koriste Composite i Decorator paterni, mogu da imaju koristi i od paterna Prototype.
84Intro | Singleton | Facade | Composite | Command | Template Method | Observer | Adapter | Prototype
-
Relevatnost sa procesom razvoja softvera
Veina dizajn paterna je relevantna sa fazama dizajna i implementacije.
Meutim, neki od njih su relevantni kao alati za fazu analize.
85
Analysis Design
Faade Composite
Chain of resp.
Singleton Prototype
Flyweight
3-Tier
Visitor
Slide 1SadrajPaterni u arhitekturi ta je dizajn patern?Slide 5Zbog ega su nam potrebni dizajn paterni?Istorija dizajn paternaStruktura dizajn paterna*Slide 9Tri tipa GoF paterna prema nameniSingletonSingleton (unikat)Slide 13Slide 14Slide 15Slide 16Slide 17FacadeFacade (Fasada)Slide 20Slide 21Slide 22Facade (Fasada) - primerFacade (Fasada) sistemski nivoFacade - PoslediceCompositeComposite (Sastav) - problemComposite (Sastav) - reenjeSlide 29Composite: StrukturaComposite: PoslediceComposite: Primeri korienjaCommandCommand (Komanda)Slide 35Command (Komanda) - primerSlide 37Command (Komanda) - primenljivostSlide 39Command (Komanda) - strukturaCommand (Komanda) - saradnjaCommand (Komanda) - poslediceTemplate methodTemplate method (ablonski metod)Slide 45Template method - problemTemplate method - strukturaTemplate method - primenljivostTemplate method - saradnjaTemplate method - poslediceTemplate method srodni paterniObserverObserver (posmatra)Slide 54Observer - ilustracijaObserver - reenjeObserver - primenljivostObserver - strukturaObserver - saradnjaObserver - poslediceObserver srodni paterniAdapterSlide 63Slide 64Adapter - problemAdapter - reenjeAdapter - primenjivostAdapter - strukturaAdapter saradnjaAdapter - poslediceSlide 71Adapter povezani paterniPrototypePrototype (prototip)Slide 75Slide 76Prototype - problemSlide 78Prototype - reenjePrototype - primenjivostPrototype - strukturaPrototype - saradnjaPrototype - posledicePrototype srodni uzorciRelevatnost sa procesom razvoja softvera