3
Model-View-Controller (Model-Pogled-Kontroler) Namjena Sablon MVC definise slabo vezivanje izmedju prikaza i logike obrade podataka. Odvojeni prikaz od logike obrade podataka postize visoku fleksibilnost i moze doprinjeti boljem razvoju i arhitekturi aplikacije. Obrada podataka se može prepustiti strucnjacima iz datih oblasti. Motivacija Male aplikacije cesto mogu postojati na nivou jedne klase, u kojoj je skoncentrisan i prikaz i sama logika rada aplikacije. U trenutku kada se aplikacija podje siriti, dolazi do povecanja i broja klasa, a samim tim i odgovornosti koje one nose. Kada se razvija veliki sistem, razni departmenti rade i suradjuju na njegovom razvoju. Tako na razvoju logikre rade developeri sa ekspertima, a u prikazu rade developeri u saradnji sa dizajnerima. Ovakav razvoj moze biti veoma nepovoljan za timove koji razvoj baziraju na pristupu opisanom na pocetku. Da bi se rijesio problem istovremenog rada na istom projektu, ali na njegovim odvojenim aspektima (logika aplikacije i prikaz) pojavila se potreba za raslojavanjem na vise dijelova. Sablon MVC se nametnuo kao odgovor na ove potrebe dijeleci arhitekturu na dio za View (Prikaz), Model (model) i Controller (kontroler). View predstavlja sve ono sto korisnik moze vidjeti i sa cime bi korisnik trebao da ima interakciju. Uzimajuci podatke iz Model-a prikaz daje korisniku uvid u stanje. Sada razvoj View-a moze da radi tim developera sa dizajnerima odvojeno od ostatka tima, postujuci jedino interfejse koji su dogovoreni. Model osigurava podatke i sve potrebne operacije za rad sa podacima. Razvoj modela nesmetano moze da bude obavljen od strane developera i eksperta za podrucje kojim se bavi sistem. Controller odigurava spregu izmedju View-a i Model-a i osigurava da prikaz i podaci ostanu konzistentni. Broj View-a u sistemu vise ne igra ulogu, jer za jedan Model moze postojati neogranicen broj View-a, a svaki od njih moze biti za drugu namjenu (tabelarni prikaz, prikaz pitama, linijski dijagram i sl.) Cesto se sa MVC sablonom spreze i sablon Observer kako bi se osigurala konzistentnost Model-a i svih View-a koji imaju interes nad podacima. Primjenjivost Sablon MVC se upotrebljava kad: se zeli razdvojiti poslovna logika od prikaza podataka. se zeli povecati fleksibilnost i visekratno koristenje jednog od elemenata View-a ili Model-a. se prave sistemi koji podrzavaju razlicite prikaze podataka.

Model - View - Controller

  • Upload
    srdjan

  • View
    21

  • Download
    2

Embed Size (px)

DESCRIPTION

MVC arhitektura, kratak opis.

Citation preview

Model-View-Controller (Model-Pogled-Kontroler)NamjenaSablonMVCdefinise slabo vezivanje izmedju prikaza i logike obrade podataka. Odvojeni prikaz od logike obrade podataka postize visoku fleksibilnost i moze doprinjeti boljem razvoju i arhitekturi aplikacije. Obrada podataka se moe prepustiti strucnjacima iz datih oblasti.MotivacijaMale aplikacije cesto mogu postojati na nivou jedne klase, u kojoj je skoncentrisan i prikaz i sama logika rada aplikacije. U trenutku kada se aplikacija podje siriti, dolazi do povecanja i broja klasa, a samim tim i odgovornosti koje one nose. Kada se razvija veliki sistem, razni departmenti rade i suradjuju na njegovom razvoju. Tako na razvoju logikre rade developeri sa ekspertima, a u prikazu rade developeri u saradnji sa dizajnerima. Ovakav razvoj moze biti veoma nepovoljan za timove koji razvoj baziraju na pristupu opisanom na pocetku.Da bi se rijesio problem istovremenog rada na istom projektu, ali na njegovim odvojenim aspektima (logika aplikacije i prikaz) pojavila se potreba za raslojavanjem na vise dijelova. SablonMVCse nametnuo kao odgovor na ove potrebe dijeleci arhitekturu na dio zaView(Prikaz),Model(model) iController(kontroler).Viewpredstavlja sve ono sto korisnik moze vidjeti i sa cime bi korisnik trebao da ima interakciju. Uzimajuci podatke izModel-a prikaz daje korisniku uvid u stanje. Sada razvojView-a moze da radi tim developera sa dizajnerima odvojeno od ostatka tima, postujuci jedino interfejse koji su dogovoreni.Modelosigurava podatke i sve potrebne operacije za rad sa podacima. Razvoj modela nesmetano moze da bude obavljen od strane developera i eksperta za podrucje kojim se bavi sistem.Controllerodigurava spregu izmedjuView-a iModel-a i osigurava da prikaz i podaci ostanu konzistentni.BrojView-a u sistemu vise ne igra ulogu, jer za jedanModelmoze postojati neogranicen brojView-a, a svaki od njih moze biti za drugu namjenu (tabelarni prikaz, prikaz pitama, linijski dijagram i sl.)Cesto se saMVCsablonom spreze i sablonObserverkako bi se osigurala konzistentnostModel-a i svihView-a koji imaju interes nad podacima.

PrimjenjivostSablonMVCse upotrebljava kad: se zeli razdvojiti poslovna logika od prikaza podataka. se zeli povecati fleksibilnost i visekratno koristenje jednog od elemenataView-a iliModel-a. se prave sistemi koji podrzavaju razlicite prikaze podataka.Struktura

Ucesnici Model predstavlja osnovno funkcionalno jezgro, kao sto je procesiranje podataka. Sadrzi sve funkcije za procesiranje podataka, njegove pretvorbe, rada sa podacima, premjestanje, obradu itd. On vrsi procesiranje podataka u pozadini i generalno predstavljaback-endlogiku. u osnovnom obliku nema nikakvo saznanje oView-u iliController-u. u prosirenoj verziji moze sadrzavati osnovne operacije za rad sa sablonomObserver. View predstavlja funkcionalnost za prikaz podataka, odnosnoModel-a. Kontrolise kako ce podaci biti predstavljeni, iscrtava kontrole, tekst, te sluzi da pribavljanje unosa od strane korisnika. uzrokuje pozivanjeController-a sa grafickim elementima koje prikazuje (na odredjenu akciju korisnika) Viewma svijest o postojanjuModelai preko medotaModeladobija podatke koje prikazuje. Controller je posrednik izmedjuModel-a iView-a. Kako sablonMVCdozvoljava potpuno odvajanjeModel-a odView-a, potreban je srednji sloj koji komunicira saModel-om iView-om. Controllerima svijest o postojanju iModel-a iView-a pa tako moze potivati zeljene metode u jednom ili drugom objektu. Controllerosigurava most koji moze povezati bilo koji i bilo koji brojModel-a sa bilo kojim i bilo kojim brojemView-a, te obratno.Saradnja Korisnik ima interakciju sa interfejsom, odnosno sa komponentamaView(pritisnuo je dugme,Enter, unio neke informacije itd.). Controllerprihvata unos saView-a. ControllerobavjestavaModelo akcijama koje je korisnik izvrsio.Modelna osnovu podataka mijenaj svoj stanje,te vrsi obradu podataka. ControllerobavjestavaViewda se model promijenio.ViewkoristiModelda bi osvjezio prikaz sa novim informacijama uzimajuci potrebne podatke izModela. korisnicki interfejs koji je dioView-a ceka nove promjene od strane korisnika, te ponavlja ciklus.Da bi se u potpunosti razumjela saradnja elemenataMVCsablona, valja spomenuti da: Modelotkriva dogadjaje koji su interesantni vanjskim objektima nakon promjene stanja. Ovo drziModelpotpuno neovisno odView-a iController-a, a samim tim dozvoljava koristenje razlicitihView-a za isti model ili da se koriste visestrukiView-i na istomModel-u. Viewpredstavlja samo vizuelni dio aplikacije i delegira saController-om u vezi bilo koje promjene interfejsa.Controllerje odgovoran za bilo koju interakciju izmedjuModel-a, pri cemuViewne zna za tu interakciju. Postoji samo mgucnost daControllerizda zahtjevView-u za osvjezavanjem sadrzaja. Viewsadrzi panele, dugmad, labele, polja za tekst itd. Sve ove kontrole su kompozitne, tako daControllerizdaje zahtjev za osvjezavanje samo osnovnoj komponenti, a onda ona prenosi taj zahtjev na sve ostale.PosljediceDodatne prednosti i mane sablonaMVC, izmadju ostalog, su: Visekratno i fleksibilno koristenje dijelova programa. SablonMVCpomaze u razbijanju i pravljenju univerzalnih komponenti za prikaz koje su neovisne od modela sa kojim rade. Isto tako model se moze koristiti vise puta u raznim projektima, bez obzira na to kakav prikaz je u pitanju. Veoma laka prosirljivost. Mogucnost da se na veoma lak nacin prosiriViewiliModel, bez prethodnog mijenjanja jednog ili drugog.