MVC dizaina modelis ir programmatūras arhitektūras modelis, kas sadala lietojumprogrammu trīs galvenajos komponentos: modelis, skats un kontrolieris, tādējādi atvieglojot kodu bāzes pārvaldību un uzturēšanu. Tas arī ļauj atkārtoti izmantot komponentus un veicina modulārāku pieeju programmatūras izstrādei.
Svarīgas tēmas MVC dizaina modelim
- Kas ir MVC dizaina modelis?
- MVC dizaina modeļa sastāvdaļas
- Komunikācija starp komponentiem
- MVC dizaina modeļa piemērs
- MVC dizaina modeļa priekšrocības
- MVC dizaina modeļa trūkumi
Kas ir MVC dizaina modelis?
The Modeļa skata kontrolieris (MVC) dizaina modelis norāda, ka lietojumprogramma sastāv no datu modeļa, prezentācijas informācijas un vadības informācijas. Modelis paredz, ka katrs no tiem ir jāsadala dažādos objektos.
- MVC modelis sadala lietojumprogrammas problēmas trīs atšķirīgos komponentos, no kuriem katrs ir atbildīgs par konkrētu lietojumprogrammas funkcionalitātes aspektu.
- Šī problēmu nodalīšana atvieglo lietojumprogrammas uzturēšanu un paplašināšanu, jo viena komponenta izmaiņām nav nepieciešamas izmaiņas citos komponentos.
MVC dizaina modeļa sastāvdaļas
1. Modelis
Modeļa komponents MVC (Model-View-Controller) dizaina shēmā atspoguļo lietojumprogrammas datus un biznesa loģiku. Tas ir atbildīgs par lietojumprogrammas datu pārvaldību, uzņēmējdarbības noteikumu apstrādi un atbildēšanu uz informācijas pieprasījumiem no citiem komponentiem, piemēram, skata un pārziņa.
2. Skats
Parāda lietotājam datus no modeļa un nosūta lietotāja ievadi uz kontrolieri. Tas ir pasīvs un tieši nesadarbojas ar modeli. Tā vietā tas saņem datus no modeļa un nosūta lietotāja ievades datu apstrādei kontrolierim.
3. Kontrolieris
Kontrolieris darbojas kā starpnieks starp modeli un skatu. Tas apstrādā lietotāja ievadi un attiecīgi atjaunina modeli un atjaunina skatu, lai atspoguļotu modeļa izmaiņas. Tajā ir ietverta lietojumprogrammu loģika, piemēram, ievades validācija un datu pārveidošana.
Komunikācija starp komponentiem
Šī saziņas plūsma, kas norādīta zemāk, nodrošina, ka katrs komponents ir atbildīgs par noteiktu lietojumprogrammas funkcionalitātes aspektu, tādējādi nodrošinot labāk uzturējamu un mērogojamu arhitektūru.
- Lietotāja mijiedarbība ar skatu:
- Lietotājs mijiedarbojas ar skatu, piemēram, noklikšķina uz pogas vai ievada tekstu formā.
- Skats saņem lietotāja ievadi:
- Skats saņem lietotāja ievadi un pārsūta to kontrolierim.
- Kontrolieris apstrādā lietotāja ievadi:
- Kontrolieris saņem lietotāja ievadi no skata.
- Tas interpretē ievadi, veic visas nepieciešamās darbības (piemēram, modeļa atjaunināšanu) un izlemj, kā reaģēt.
- Kontrollera atjauninājumu modelis:
- Kontrolieris atjaunina modeli, pamatojoties uz lietotāja ievadi vai lietojumprogrammas loģiku.
- Modelis paziņo par izmaiņām:
- Ja modelis mainās, tas par to informē skatu.
- Skatīt pieprasījumu datus no modeļa:
- Skats pieprasa datus no modeļa, lai atjauninātu tā displeju.
- Kontrollera atjauninājumu skats:
- Kontrolieris atjaunina skatu, pamatojoties uz izmaiņām modelī vai atbildot uz lietotāja ievadi.
- Skatīt renderēšanas atjaunināto lietotāja saskarni:
- Skats atveido atjaunināto lietotāja interfeisu, pamatojoties uz kontroliera veiktajām izmaiņām.
MVC dizaina modeļa piemērs
Tālāk ir norādīts iepriekš minētā problēmas paziņojuma kods, izmantojot MVC dizaina modeli:
Sadalīsimies komponentu kodā:
1. Modele (studentu klase)
Atspoguļo datus (studenta vārdu un saraksta numuru) un nodrošina metodes, kā piekļūt šiem datiem un tos mainīt.
Java
abs c kods
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. Skatīt (StudentView klase)
Norāda, kā dati (skolēna informācija) ir jāparāda lietotājam. Satur metodi ( printStudentDetails>
), lai izdrukātu skolēna vārdu un ruļļa numuru.
Java
Austrālijas pilsētas
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. Kontrolieris (StudentController klase)
Darbojas kā starpnieks starp modeli un skatu. Satur atsauces uz Model un View objektiem. Nodrošina modeļa atjaunināšanas metodes (piem., setStudentName>
, setStudentRollNo>
) un atjaunināt skatu ( updateView>
).
Java
kā lasīt no csv faila 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());> > }> }> |
>
>
Pilnīgs kods iepriekšminētajam piemēram
Zemāk ir pilns iepriekš minētā piemēra kods:
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;> > }> }> |
>
>
Izvade
kā pārtaisīt Photoshop
Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157> |
>
>
MVC dizaina modeļa priekšrocības
- Bažu nošķiršana: MVC atdala dažādus lietojumprogrammas aspektus (datus, lietotāja saskarni un loģiku), padarot kodu vieglāk saprotamu, uzturējamu un modificējamu.
- Modularitāte: Katru komponentu (modelis, skats, kontrolleris) var izstrādāt un pārbaudīt atsevišķi, veicinot koda atkārtotu izmantošanu un mērogojamību.
- Elastīgums: Tā kā komponenti ir neatkarīgi, viena komponenta izmaiņas neietekmē pārējos, ļaujot vieglāk atjaunināt un pārveidot.
- Paralēlā attīstība: Vairāki izstrādātāji var vienlaikus strādāt ar dažādiem komponentiem, paātrinot izstrādes procesu.
- Koda atkārtota izmantošana: Komponentus var atkārtoti izmantot citās lietojumprogrammas daļās vai dažādos projektos, samazinot izstrādes laiku un pūles.
MVC dizaina modeļa trūkumi
- Sarežģītība: MVC modeļa ieviešana var padarīt kodu sarežģītāku, īpaši vienkāršākām lietojumprogrammām, radot papildu izmaksas izstrādei.
- Mācību līkne: Izstrādātājiem ir jāsaprot MVC koncepcija un efektīva tā ieviešana, kas var prasīt papildu laiku un resursus.
- Pieskaitāmās izmaksas: Komunikācija starp komponentiem (modelis, skats, kontrolieris) var radīt papildu izmaksas, kas ietekmē lietojumprogrammas veiktspēju, īpaši vidēs, kurās ir ierobežoti resursi.
- Pārdomātas inženierijas potenciāls: Dažos gadījumos izstrādātāji var pārlieku izstrādāt lietojumprogrammu, pievienojot nevajadzīgas abstrakcijas un slāņus, kā rezultātā kods ir uzpūsts un grūti uzturējams.
- Palielināts failu skaits: MVC var radīt lielāku failu un klašu skaitu, salīdzinot ar vienkāršākām arhitektūrām, kas var padarīt projekta struktūru sarežģītāku un grūtāk orientēties.