t-4 dizajn paterni

Upload: mladjanobradovic

Post on 10-Oct-2015

136 views

Category:

Documents


4 download

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