Model–view–controller
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).
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 (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 (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.
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.
- Action–domain–responder
- Entity-control-boundary
- Model–view–adapter
- Model–view–presenter
- Model–view–viewmodel
- Presentation–abstraction–control
- Princip jednoznačne namjene (SRP)
- Princip klasne otvorenosti (OCP)
- Liskovljev princip supstitucije (LSP)
- Princip segregacije sučelja (ISP)
- ↑ 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.