Malli-näkymäohjain (MVC) on eräänlainen ohjelmistoarkkitehtuuri ja suunnittelumalli, joka segmentoi ohjelman jokainen osa hyvin määriteltyihin toiminta-alueisiin. Malli-näkymä-ohjain -arkkitehtuurissa malli käsittelee kaikkea sisäistä ohjelmalogiikkaa, joka manipuloi, tallentaa, hakee ja muuten käsittelee ja laskee tietoja. Näkymä on vastuussa mallin tietojen näyttämisestä käyttäjälle, ja se tarjoaa myös tavan antaa käyttäjälle tietoa ohjelmasta. Ohjain ottaa syötteen näkymästä, arvioi tai muuten käsittelee sitä ja vuorovaikuttaa mallin kanssa muuttaakseen tietoja tai ohjelman tilaa, joka lopulta näytetään käyttäjälle näkymän kautta. Vaikka mallin katseluohjaimen ja ohjaimen suunnittelu vaatii ohjelman toiminnallisuuden koteloimiseksi, näiden kolmen osion on silti oltava vuorovaikutuksessa toistensa kanssa ja yleensä riippuvaisia toisistaan jossain mielessä, toisin kuin muut aggressiivisemmat suunnittelumallit.
Melko usein malli-näkymä-ohjain -kuvio näkyy sovelluksissa, jotka hallitsevat graafista käyttöliittymää (GUI). MVC -kuvion avulla graafisen käyttöliittymän eri visuaaliset elementit käsitellään näkymässä, ohjain käsittelee käyttäjän napsautuksen tallennuksen ja käsittelyn, ja tietojen muuttaminen tai tietojen lataaminen tapahtuu itse mallin avulla. Sovelluksen tarkasta suunnittelusta riippuen jokaisella MVC -kuvion osalla voi olla mekanismi vuorovaikutukseen muiden komponenttien kanssa, kuten malli, joka voi suoraan ohjata näkymää näytön päivittämiseksi tai näkymän tapa kertoa ohjaa, että se päivittää näytön eikä hyväksy uutta tuloa. Toisin kuin jotkut suunnittelumallit, joissa noudatetaan tiukkaa mustan laatikon lähestymistapaa, mallinäkymäohjaimen ohjelmat ovat yleensä hieman joustavampia, vaikka jotkin toteutukset voivat vaikeuttaa MVC-ohjelman muuttamista tai virheenkorjausta modulaarisesti.
Joissakin tapauksissa malli-näkymä-ohjain -kuvion ei tarvitse sisältää vain yhtä kutakin osaa. Yksi esimerkki on sovellus, jolla on useita näkymiä, kuten useita näyttöjä, tai näyttö, joka näkyy useilla asiakaslaitteilla. Useita näkymiä ja ohjaimia voidaan käyttää sovelluksessa, jonka avulla monet käyttäjät voivat käyttää tietokantaa ja kaikki vastaavat yhteen malliin. Yleisempää on kuitenkin suunnitella järjestelmiä, jotka ylläpitävät mallinäkymän ohjaimen komponenttien suhdetta yksi yhteen.
Vaikka mallinäkymäohjaimen komponentit ovat riippuvaisia toisistaan, voi olla paljon helpompaa muokata tiettyjä järjestelmän osia, jotka käyttävät MVC-mallia, kuin jos mitään mallia ei käytettäisi ollenkaan, varsinkin jos kyseessä ei ole objekti sovellukset. Jos sovellus käyttää takaisinsoittoa tai kuuntelijoita ja tarkkailijoita komponenttien välisen vuorovaikutuksen toteuttamiseksi, kukin komponentti voidaan muuttaa vaikuttamatta kahteen muuhun. Tämä tarkoittaa, että uusi graafinen käyttöliittymä voidaan ottaa käyttöön vaikuttamatta malliin tai ohjaimeen. On kuitenkin huomattava, että perustavanlaatuiset muutokset mallinäkymäohjainjärjestelmään saattavat vaatia pienen määrän uudelleenkoodausta kullekin yksittäiselle komponentille.