Model–view–controller: razlika između inačica
→View: oops |
m sit. |
||
Redak 1: | Redak 1: | ||
[[Datoteka:ModelViewControllerDiagram2.svg|thumb|350px|'''MVC koncept'''. Puna crta prikazuje direktnu povezanost dok isprekidana prikazuje indirektnu povezanost kroz promatrača]] |
[[Datoteka:ModelViewControllerDiagram2.svg|thumb|350px|'''MVC koncept'''. Puna crta prikazuje direktnu povezanost dok isprekidana prikazuje indirektnu povezanost kroz promatrača]] |
||
'''Model–View–Controller (MVC)''' je obrazac softverske arhitekture. Koristi se u [[softver]]skom inženjeringu za odvajanje pojedinih dijelova aplikacije u komponente ovisno o njihovoj namjeni. Ovaj se obrazac u početku koristio za dizajniranje [[Grafičko korisničko sučelje|grafičkog korisničkog sučelja]], kako bi bio zadovoljen [[ |
'''Model–View–Controller (MVC)''' je obrazac softverske arhitekture. Koristi se u [[softver]]skom inženjeringu za odvajanje pojedinih dijelova aplikacije u komponente ovisno o njihovoj namjeni. Ovaj se obrazac u početku koristio za dizajniranje [[Grafičko korisničko sučelje|grafičkog korisničkog sučelja]], kako bi bio zadovoljen [[princip jednoznačne namjene]] (''Single responsibility principle'')<ref>{{Citiranje weba|title=Model View Controller History|url=http://wiki.c2.com/?ModelViewControllerHistory|url-status=live|access-date=2023-07-04|website=wiki.c2.com}}</ref>, no u novije vrijeme koristi se i za razvoj [[web aplikacija]].<ref>{{Cite news|url=http://blog.iandavis.com/2008/12/what-are-the-benefits-of-mvc/|title=What Are The Benefits of MVC?|last=Davis|first=Ian|newspaper=Internet Alchemy|access-date=2016-11-29}}</ref> Popularni programski jezici imaju posebna MVC okruženja (''frameworke'') koji pomažu pri implementaciji ovog obrasca ([[Spring Boot]], [[.NET Framework|.NET]], [[JavaScriptMVC]] i drugi). |
||
== Komponente == |
== Komponente == |
Posljednja izmjena od 5. srpnja 2023. u 00:21
Model–View–Controller (MVC) je obrazac softverske arhitekture. Koristi se u softverskom inženjeringu za odvajanje pojedinih dijelova aplikacije u komponente ovisno o njihovoj namjeni. Ovaj se obrazac u početku koristio za dizajniranje grafičkog korisničkog sučelja, kako bi bio zadovoljen princip jednoznačne namjene (Single responsibility principle)[1], no u novije vrijeme koristi se i za razvoj web aplikacija.[2] Popularni programski jezici imaju posebna MVC okruženja (frameworke) koji pomažu pri implementaciji ovog obrasca (Spring Boot, .NET, JavaScriptMVC i drugi).
Komponente[uredi | uredi kôd]
Model[uredi | uredi kôd]
Model je središnja komponenta ovog uzorka, koji predstavlja dinamičku podatkovnu strukturu aplikacije, neovisnu o korisničkom sučelju i ponašanjima aplikacije.[3] U web aplikacijama, tipizacija jednog modela obično predstavlja strukturu jedne tablice u bazi podataka aplikacije.[4][5][6]
View[uredi | uredi kôd]
View (pogled) predstavlja predložak sučelja s kojim korisnik može interaktirati. View obično prima predodređeni model, čijim se podatcima popunjavaju dijelovi sučelja.
Controller[uredi | uredi kôd]
Controller (upravitelj) je odgovoran za interakcije korisnika s aplikacijom. Aplikacije često imaju definirani usmjerivač (router) koji određuje koji zahtjev ide kojem upravitelju, koju je metodu Controllera nužno pozvati, i koje informacije joj treba proslijediti. Ovisno o prirodi korisničkog zahtjeva, Controller može dohvaćati podatke iz baze podataka, mijenjati podatke u modelu, i stvarati nove, privremene modele. Zadnja akcija Controllera je obično pozivanje pogleda i proslijeđivanje modela za prikaz.
Interakcije[uredi | uredi kôd]
Obrazac također definira i dopuštene interakcije između komponenti.[7]
- Model opisuje strukturu, tipizaciju, prava pristupa i ponašanje podatkovnih entiteta korištenih u aplikaciji.
- Pogled (view) odgovoran je za prezentaciju modela u predodređenom obliku.
- Upravitelj (controller) odgovara na korisničke upite i izvodi interakcije sa objektima modela. On prima podatke od korisnika, po potrebi vrši njihovu validaciju, interaktira s modelom i vraća pogled.
Poveznice[uredi | uredi kôd]
Slični obrasci[uredi | uredi kôd]
- Action–domain–responder
- Entity-control-boundary
- Model–view–adapter
- Model–view–presenter
- Model–view–viewmodel
- Presentation–abstraction–control
Principi objektnog dizajna[uredi | uredi kôd]
- Princip jednoznačne namjene (SRP)
- Princip klasne otvorenosti (OCP)
- Liskovljev princip supstitucije (LSP)
- Princip segregacije sučelja (ISP)
Izvori[uredi | uredi kôd]
- ↑ Model View Controller History. wiki.c2.com. Pristupljeno 4. srpnja 2023.
- ↑ Davis, Ian. What Are The Benefits of MVC?. Internet Alchemy. Pristupljeno 29. studenoga 2016.
- ↑ Burbeck, Steve (1992) Applications Programming in Smalltalk-80:How to use Model–View–Controller (MVC)
- ↑ WebObjects System Overview (PDF). Apple Computer, Inc.. Cupertino, CA. Svibanj 2001. str. 28.
In WebObjects, a model establishes and maintains a correspondence between an enterprise object class and data stored in a relational database.
- ↑ Active Record Basics. Rails Guides. Pristupljeno 27. listopada 2022..
This will create a
Product
model, mapped to a products table at the database. - ↑ Models. Django Documentation. Pristupljeno 27. listopada 2022..
Generally, each model maps to a single database table.
- ↑ Buschmann, Frank (1996) Pattern-Oriented Software Architecture.