logo

MVC dizaino modelis

MVC dizaino modelis yra programinės įrangos architektūros modelis, kuris padalija programą į tris pagrindinius komponentus: modelį, rodinį ir valdiklį, todėl lengviau valdyti ir prižiūrėti kodų bazę. Tai taip pat leidžia pakartotinai naudoti komponentus ir skatina labiau modulinį požiūrį į programinės įrangos kūrimą.



Svarbios MVC dizaino modelio temos

Kas yra MVC dizaino modelis?

The Modelio peržiūros valdiklis (MVC) dizaino modelis nurodo, kad programą sudaro duomenų modelis, pateikimo informacija ir valdymo informacija. Modelis reikalauja, kad kiekvienas iš jų būtų atskirtas į skirtingus objektus.

  • MVC modelis suskirsto programos problemas į tris atskirus komponentus, kurių kiekvienas yra atsakingas už konkretų programos funkcionalumo aspektą.
  • Dėl šio problemų atskyrimo programą lengviau prižiūrėti ir išplėsti, nes pakeitus vieną komponentą nereikia keisti kitų komponentų.

MVC dizaino modelio komponentai



1. Modelis

MVC (Model-View-Controller) dizaino modelio modelio komponentas atspindi programos duomenis ir verslo logiką. Ji atsakinga už programos duomenų tvarkymą, verslo taisyklių tvarkymą ir atsakymą į informacijos iš kitų komponentų, pvz., rodinio ir valdytojo, užklausas.

2. Žiūrėti

Rodo duomenis iš modelio vartotojui ir siunčia vartotojo įvestis į valdiklį. Jis yra pasyvus ir tiesiogiai su modeliu nesąveikauja. Vietoj to, jis gauna duomenis iš modelio ir siunčia vartotojo įvestis į Valdiklį apdoroti.

3. Valdiklis

Valdiklis veikia kaip tarpininkas tarp modelio ir rodinio. Jis apdoroja vartotojo įvestį ir atitinkamai atnaujina modelį bei atnaujina rodinį, kad atspindėtų modelio pakeitimus. Jame yra programų logika, pvz., įvesties patvirtinimas ir duomenų transformavimas.



Komponentų ryšys

Šis žemiau pateiktas ryšio srautas užtikrina, kad kiekvienas komponentas būtų atsakingas už konkretų programos funkcionalumo aspektą, todėl architektūra yra lengviau prižiūrima ir keičiama.

  • Naudotojo sąveika su rodiniu:
    • Vartotojas sąveikauja su rodiniu, pvz., spustelėja mygtuką arba įveda tekstą į formą.
  • Rodinys Gauna vartotojo įvestį:
    • Vaizdas priima vartotojo įvestį ir perduoda jį valdikliui.
  • Valdiklis apdoroja vartotojo įvestį:
    • Valdiklis gauna vartotojo įvestį iš rodinio.
    • Jis interpretuoja įvestį, atlieka visas būtinas operacijas (pvz., atnaujina modelį) ir nusprendžia, kaip reaguoti.
  • Valdiklio atnaujinimų modelis:
    • Valdiklis atnaujina modelį pagal vartotojo įvestį arba programos logiką.
  • Modelis praneša apie pakeitimus:
    • Jei modelis pasikeičia, jis praneša rodiniui.
  • Peržiūrėti modelio užklausų duomenis:
    • Rodinys prašo duomenų iš modelio, kad būtų atnaujintas jo vaizdas.
  • Valdiklio atnaujinimų rodinys:
    • Valdiklis atnaujina rodinį pagal modelio pakeitimus arba reaguodamas į vartotojo įvestį.
  • Peržiūrėti „Renders“ atnaujintą vartotojo sąsają:
    • Rodinys pateikia atnaujintą vartotojo sąsają pagal Valdiklio atliktus pakeitimus.

MVC dizaino modelio pavyzdys

Žemiau yra aukščiau pateikto problemos pareiškimo kodas naudojant MVC dizaino modelį:

Suskirstykime į komponentų kodą:

1. Modelis (studentų klasė)

Nurodo duomenis (studento vardą ir pavardę bei sąrašo numerį) ir pateikia metodus, kaip pasiekti ir keisti šiuos duomenis.

Java


seleno pamoka java



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. Žiūrėti (StudentView klasė)

Nurodo, kaip duomenys (mokinio informacija) turi būti rodomi vartotojui. Sudėtyje yra metodas ( printStudentDetails> ) atspausdinti mokinio vardą ir ritinio numerį.

Java




rasti žemėlapyje c++
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. Valdiklis (StudentController klasė)

Veikia kaip tarpininkas tarp modelio ir vaizdo. Yra nuorodų į modelio ir rodinio objektus. Pateikiami modelio atnaujinimo metodai (pvz., setStudentName> , setStudentRollNo> ) ir atnaujinti rodinį ( 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());> >}> }>

>

>

Pilnas anksčiau pateikto pavyzdžio kodas

Žemiau pateikiamas visas aukščiau pateikto pavyzdžio kodas:

Java


daryti būdami java



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;> >}> }>

>

>

Išvestis

javascript pavyzdys




Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157>

>

>

MVC dizaino modelio privalumai

  • Rūpesčių atskyrimas: MVC atskiria skirtingus programos aspektus (duomenis, vartotojo sąsają ir logiką), todėl kodą lengviau suprasti, prižiūrėti ir modifikuoti.
  • Moduliškumas: Kiekvienas komponentas (modelis, rodinys, valdiklis) gali būti kuriamas ir išbandomas atskirai, skatinant kodo pakartotinį naudojimą ir mastelio keitimą.
  • Lankstumas: Kadangi komponentai yra nepriklausomi, vieno komponento pakeitimai neturi įtakos kitiems, todėl lengviau atnaujinti ir modifikuoti.
  • Lygiagretus vystymasis: Keli kūrėjai gali vienu metu dirbti su skirtingais komponentais, pagreitindami kūrimo procesą.
  • Kodo pakartotinis naudojimas: Komponentai gali būti pakartotinai naudojami kitose programos dalyse arba skirtinguose projektuose, taip sumažinant kūrimo laiką ir pastangas.

MVC dizaino modelio trūkumai

  • Sudėtingumas: Įdiegus MVC modelį, kodas gali būti sudėtingesnis, ypač naudojant paprastesnes programas, o tai gali sukelti papildomų išlaidų kuriant.
  • Mokymosi kreivė: Kūrėjai turi suprasti MVC koncepciją ir kaip ją efektyviai įgyvendinti, todėl gali prireikti papildomo laiko ir išteklių.
  • Papildomos išlaidos: Ryšys tarp komponentų (modelio, rodinio, valdiklio) gali sukelti papildomų išlaidų, turinčių įtakos programos veikimui, ypač ribotose aplinkose.
  • Pernelyg didelės inžinerijos galimybės: Kai kuriais atvejais kūrėjai gali per daug suprojektuoti programą pridėdami nereikalingų abstrakcijų ir sluoksnių, todėl kodas išpūstas ir sunkiai prižiūrimas.
  • Padidintas failų skaičius: MVC gali sukelti didesnį failų ir klasių skaičių, palyginti su paprastesnėmis architektūromis, todėl projekto struktūra gali būti sudėtingesnė ir sunkiau naršoma.