Model–view–controller

Izvor: Wikipedija
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 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]

Principi objektnog dizajna[uredi | uredi kôd]

Izvori[uredi | uredi kôd]

  1. Model View Controller History. wiki.c2.com. Pristupljeno 4. srpnja 2023.
  2. Davis, Ian. What Are The Benefits of MVC?. Internet Alchemy. Pristupljeno 29. studenoga 2016.
  3. Burbeck, Steve (1992) Applications Programming in Smalltalk-80:How to use Model–View–Controller (MVC)
  4. 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.
  5. Active Record Basics. Rails Guides. Pristupljeno 27. listopada 2022.. This will create a Product model, mapped to a products table at the database.
  6. Models. Django Documentation. Pristupljeno 27. listopada 2022.. Generally, each model maps to a single database table.
  7. Buschmann, Frank (1996) Pattern-Oriented Software Architecture.