MVC-suunnittelumalli on ohjelmistoarkkitehtuurimalli, joka jakaa sovelluksen kolmeen pääkomponenttiin: Malli, Näkymä ja Ohjain, mikä helpottaa koodikannan hallintaa ja ylläpitoa. Se mahdollistaa myös komponenttien uudelleenkäytettävyyden ja edistää modulaarisempaa lähestymistapaa ohjelmistokehitykseen.
Tärkeitä aiheita MVC-suunnittelumallille
- Mikä on MVC-suunnittelumalli?
- MVC-suunnittelumallin osat
- Komponenttien välinen viestintä
- Esimerkki MVC-suunnittelukuviosta
- MVC-suunnittelumallin edut
- MVC-suunnittelumallin haitat
Mikä on MVC-suunnittelumalli?
The Mallinäkymän ohjain (MVC) suunnittelumalli määrittää, että sovellus koostuu tietomallista, esitystiedoista ja ohjaustiedoista. Malli edellyttää, että jokainen näistä on erotettu eri esineiksi.
- MVC-malli erottaa sovelluksen huolenaiheet kolmeen erilliseen osaan, joista jokainen vastaa sovelluksen toiminnallisuuden tietystä osa-alueesta.
- Tämä huolenaiheiden erottelu helpottaa sovelluksen ylläpitoa ja laajentamista, koska yhden komponentin muutokset eivät vaadi muutoksia muihin komponentteihin.
MVC-suunnittelumallin osat
1. Malli
Mallikomponentti MVC (Model-View-Controller) -suunnittelumallissa edustaa sovelluksen dataa ja liiketoimintalogiikkaa. Se vastaa sovelluksen tietojen hallinnasta, liiketoimintasääntöjen käsittelystä ja muiden komponenttien, kuten näkymän ja rekisterinpitäjän, tietopyyntöihin vastaamisesta.
2. Näytä
Näyttää mallin tiedot käyttäjälle ja lähettää käyttäjän syötteitä ohjaimelle. Se on passiivinen eikä ole suoraan vuorovaikutuksessa mallin kanssa. Sen sijaan se vastaanottaa tietoja mallista ja lähettää käyttäjän syötteitä ohjaimelle käsittelyä varten.
3. Ohjain
Ohjain toimii välittäjänä mallin ja näkymän välillä. Se käsittelee käyttäjän syötteitä ja päivittää mallin vastaavasti ja päivittää näkymän vastaamaan mallin muutoksia. Se sisältää sovelluslogiikkaa, kuten syötteen validoinnin ja tietojen muuntamisen.
Komponenttien välinen viestintä
Tämä alla oleva viestintäkulku varmistaa, että jokainen komponentti on vastuussa tietystä sovelluksen toiminnallisuuden osa-alueesta, mikä johtaa ylläpidettävämpään ja skaalautuvampaan arkkitehtuuriin.
- Käyttäjän vuorovaikutus näkymän kanssa:
- Käyttäjä on vuorovaikutuksessa näkymän kanssa, esimerkiksi napsauttamalla painiketta tai kirjoittamalla tekstiä lomakkeeseen.
- Näytä vastaanottaa käyttäjän syötteen:
- Näkymä vastaanottaa käyttäjän syötteen ja välittää sen ohjaimelle.
- Ohjain käsittelee käyttäjän syötteitä:
- Ohjain vastaanottaa käyttäjän syötteen näkymästä.
- Se tulkitsee syötteen, suorittaa kaikki tarvittavat toiminnot (kuten päivittää mallin) ja päättää, kuinka vastata.
- Ohjaimen päivitysmalli:
- Ohjain päivittää mallin käyttäjän syötteen tai sovelluslogiikan perusteella.
- Malli ilmoittaa muutoksista:
- Jos malli muuttuu, se ilmoittaa näkymälle.
- Näytä mallin pyyntötiedot:
- Näkymä pyytää tietoja mallilta näytön päivittämiseksi.
- Ohjaimen päivitykset -näkymä:
- Ohjain päivittää näkymän mallin muutosten perusteella tai käyttäjän syötteen perusteella.
- Näytä Rendereiden päivitetty käyttöliittymä:
- Näkymä näyttää päivitetyn käyttöliittymän ohjaimen tekemien muutosten perusteella.
Esimerkki MVC-suunnittelukuviosta
Alla on yllä olevan ongelman koodi, jossa käytetään MVC-suunnittelumallia:
Jaotetaanpa komponenttikohtaiseen koodiin:
1. Malli (opiskelijaluokka)
Edustaa tietoja (opiskelijan nimi ja kirjan numero) ja tarjoaa menetelmiä näiden tietojen käyttämiseen ja muokkaamiseen.
Java
npm välimuistin tyhjennysvoima
class> Student {> > private> String rollNo;> > private> String name;> > public> String getRollNo() {> > return> rollNo;> > }> > public> void> setRollNo(String rollNo) {> > this> .rollNo = rollNo;> > }> > public> String getName() {> > return> name;> > }> > public> void> setName(String name) {> > this> .name = name;> > }> }> |
>
>
2. Näytä (StudentView-luokka)
Edustaa, kuinka tiedot (opiskelijatiedot) tulee näyttää käyttäjälle. Sisältää menetelmän ( printStudentDetails>
) tulostaaksesi opiskelijan nimen ja rullan numeron.
Java
c merkkijonojen kooditaulukko
class> StudentView {> > public> void> printStudentDetails(String studentName, String studentRollNo) {> > System.out.println(> 'Student:'> );> > System.out.println(> 'Name: '> + studentName);> > System.out.println(> 'Roll No: '> + studentRollNo);> > }> }> |
>
>
3. Ohjain (StudentController-luokka)
Toimii välittäjänä mallin ja näkymän välillä. Sisältää viittauksia Model- ja View-objekteihin. Tarjoaa menetelmiä mallin päivittämiseen (esim. setStudentName>
, setStudentRollNo>
) ja päivittää näkymän ( updateView>
).
Java
class> StudentController {> > private> Student model;> > private> StudentView view;> > public> StudentController(Student model, StudentView view) {> > this> .model = model;> > this> .view = view;> > }> > public> void> setStudentName(String name) {> > model.setName(name);> > }> > public> String getStudentName() {> > return> model.getName();> > }> > public> void> setStudentRollNo(String rollNo) {> > model.setRollNo(rollNo);> > }> > public> String getStudentRollNo() {> > return> model.getRollNo();> > }> > public> void> updateView() {> > view.printStudentDetails(model.getName(), model.getRollNo());> > }> }> |
>
>
Täydellinen koodi yllä olevaa esimerkkiä varten
Alla on yllä olevan esimerkin täydellinen koodi:
Java
lisäys täynnä
class> Student {> > private> String rollNo;> > private> String name;> > public> String getRollNo() {> > return> rollNo;> > }> > public> void> setRollNo(String rollNo) {> > this> .rollNo = rollNo;> > }> > public> String getName() {> > return> name;> > }> > public> void> setName(String name) {> > this> .name = name;> > }> }> class> StudentView {> > public> void> printStudentDetails(String studentName, String studentRollNo) {> > System.out.println(> 'Student:'> );> > System.out.println(> 'Name: '> + studentName);> > System.out.println(> 'Roll No: '> + studentRollNo);> > }> }> class> StudentController {> > private> Student model;> > private> StudentView view;> > public> StudentController(Student model, StudentView view) {> > this> .model = model;> > this> .view = view;> > }> > public> void> setStudentName(String name) {> > model.setName(name);> > }> > public> String getStudentName() {> > return> model.getName();> > }> > public> void> setStudentRollNo(String rollNo) {> > model.setRollNo(rollNo);> > }> > public> String getStudentRollNo() {> > return> model.getRollNo();> > }> > public> void> updateView() {> > view.printStudentDetails(model.getName(), model.getRollNo());> > }> }> public> class> MVCPattern {> > public> static> void> main(String[] args) {> > Student model = retriveStudentFromDatabase();> > StudentView view => new> StudentView();> > StudentController controller => new> StudentController(model, view);> > controller.updateView();> > controller.setStudentName(> 'Vikram Sharma'> );> > controller.updateView();> > }> > private> static> Student retriveStudentFromDatabase() {> > Student student => new> Student();> > student.setName(> 'Lokesh Sharma'> );> > student.setRollNo(> '15UCS157'> );> > return> student;> > }> }> |
>
>
Lähtö
komento touch linuxissa
Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157> |
>
>
MVC-suunnittelumallin edut
- Huolien erottelu: MVC erottaa sovelluksen eri osa-alueet (data, käyttöliittymä ja logiikka), mikä tekee koodista helpompi ymmärtää, ylläpitää ja muokata.
- Modulaarisuus: Jokainen komponentti (malli, näkymä, ohjain) voidaan kehittää ja testata erikseen, mikä edistää koodin uudelleenkäytettävyyttä ja skaalautuvuutta.
- Joustavuus: Koska komponentit ovat riippumattomia, yhteen komponenttiin tehdyt muutokset eivät vaikuta muihin, mikä mahdollistaa helpompia päivityksiä ja muutoksia.
- Rinnakkaiskehitys: Useat kehittäjät voivat työskennellä eri komponenttien parissa samanaikaisesti, mikä nopeuttaa kehitysprosessia.
- Koodin uudelleenkäyttö: Komponentteja voidaan käyttää uudelleen sovelluksen muissa osissa tai erilaisissa projekteissa, mikä vähentää kehitystyötä ja vaivaa.
MVC-suunnittelumallin haitat
- Monimutkaisuus: MVC-mallin käyttöönotto voi monimutkaistaa koodia erityisesti yksinkertaisemmissa sovelluksissa, mikä johtaa kehitykseen ylimääräisiin kustannuksiin.
- Oppimiskäyrä: Kehittäjien on ymmärrettävä MVC:n käsite ja sen tehokas toteuttaminen, mikä saattaa vaatia lisäaikaa ja resursseja.
- Yleiskustannukset: Komponenttien välinen viestintä (malli, näkymä, ohjain) voi johtaa ylimääräisiin kustannuksiin, mikä vaikuttaa sovelluksen suorituskykyyn, erityisesti resurssirajoitteisissa ympäristöissä.
- Mahdollisuudet ylisuunnitteluun: Joissakin tapauksissa kehittäjät voivat suunnitella sovellusta liikaa lisäämällä tarpeettomia abstraktioita ja tasoja, mikä johtaa paisuneeseen ja vaikeasti ylläpidettävään koodiin.
- Lisääntynyt tiedostomäärä: MVC voi aiheuttaa suuremman määrän tiedostoja ja luokkia verrattuna yksinkertaisempiin arkkitehtuureihin, mikä voi tehdä projektin rakenteesta monimutkaisemman ja vaikeampaa navigoida.