Модел-Виев-Цонтроллер (МВЦ) је добро познат дизајн образац у области веб развоја. То је начин да организујемо наш код. Он прецизира да се програм или апликација састоји од модела података, информација о презентацији и контролних информација. МВЦ образац треба да све ове компоненте буду раздвојене као различити објекти.
У овом одељку ћемо разговарати о МВЦ архитектури у Јави, заједно са њеним предностима и недостацима и примерима за разумевање имплементације МВЦ у Јави.
Шта је МВЦ архитектура у Јави?
Дизајни модела засновани на МВЦ архитектури прате МВЦ образац дизајна. Логика апликације је одвојена од корисничког интерфејса док се дизајнира софтвер коришћењем дизајна модела.
кружно заказивање
Архитектура МВЦ шаблона се састоји од три слоја:
У Јава програмирању, модел садржи једноставне Јава класе , приказ који се користи за приказ података и контролер садржи сервлети . Због овог раздвајања, захтеви корисника се обрађују на следећи начин:
- Клијент (претраживач) шаље захтев контролеру на страни сервера, за страницу.
- Контролер тада позива модел. Прикупља тражене податке.
- Затим контролер преноси преузете податке у слој приказа.
- Сада се резултат шаље назад претраживачу (клијенту) од стране приказа.
Предности МВЦ архитектуре
Предности МВЦ архитектуре су следеће:
- МВЦ има карактеристику скалабилности која заузврат помаже у развоју апликације.
- Компоненте се лако одржавају јер постоји мање зависности.
- Модел се може поново користити од стране вишеструких погледа који омогућавају поновну употребу кода.
- Програмери могу да раде са три слоја (модел, приказ и контролер) истовремено.
- Користећи МВЦ, апликација постаје разумљивија.
- Користећи МВЦ, сваки слој се одржава засебно, тако да нам није потребно да се бавимо масивним кодом.
- Проширивање и тестирање апликације је лакше.
Имплементација МВЦ-а коришћењем Јаве
Да бисмо имплементирали МВЦ образац у Јави, од нас се тражи да креирамо следеће три класе.
Слојеви МВЦ архитектуре
Модел Лаиер
Модел у МВЦ обрасцу дизајна делује као слој података за апликацију. Представља пословну логику апликације и такође стање апликације. Објекат модела преузима и чува стање модела у бази података. Користећи слој модела, правила се примењују на податке који представљају концепте примене.
Хајде да размотримо следећи исечак кода који креира а који је такође први корак за имплементацију МВЦ шаблона.
Емплоиее.јава
// class that represents model public class Employee { // declaring the variables private String EmployeeName; private String EmployeeId; private String EmployeeDepartment; // defining getter and setter methods public String getId() { return EmployeeId; } public void setId(String id) { this.EmployeeId = id; } public String getName() { return EmployeeName; } public void setName(String name) { this.EmployeeName = name; } public String getDepartment() { return EmployeeDepartment; } public void setDepartment(String Department) { this.EmployeeDepartment = Department; } }
Горњи код се једноставно састоји од геттер и сеттер метода за класу Емплоиее.
Виев Лаиер
Као што назив приказује, приказ представља визуелизацију података добијених из модела. Слој приказа се састоји од излаза апликације или корисничког интерфејса. Он шаље тражене податке клијенту, које контролер преузима из слоја модела.
Узмимо пример где креирамо приказ користећи класу ЕмплоиееВиев.
ЕмплоиееВиев.јава
// class which represents the view public class EmployeeView { // method to display the Employee details public void printEmployeeDetails (String EmployeeName, String EmployeeId, String EmployeeDepartment){ System.out.println('Employee Details: '); System.out.println('Name: ' + EmployeeName); System.out.println('Employee ID: ' + EmployeeId); System.out.println('Employee Department: ' + EmployeeDepartment); } }
Цонтроллер Лаиер
Слој контролера добија корисничке захтеве из слоја приказа и обрађује их, уз неопходне провере. Делује као интерфејс између модела и погледа. Захтеви се затим шаљу моделу за обраду података. Када се обрађују, подаци се шаљу назад у контролер и затим се приказују на приказу.
Хајде да размотримо следећи исечак кода који креира контролер користећи класу ЕмплоиееЦонтроллер.
ЕмплоиееЦонтроллер.јава
// class which represent the controller public class EmployeeController { // declaring the variables model and view private Employee model; private EmployeeView view; // constructor to initialize public EmployeeController(Employee model, EmployeeView view) { this.model = model; this.view = view; } // getter and setter methods public void setEmployeeName(String name){ model.setName(name); } public String getEmployeeName(){ return model.getName(); } public void setEmployeeId(String id){ model.setId(id); } public String getEmployeeId(){ return model.getId(); } public void setEmployeeDepartment(String Department){ model.setDepartment(Department); } public String getEmployeeDepartment(){ return model.getDepartment(); } // method to update view public void updateView() { view.printEmployeeDetails(model.getName(), model.getId(), model.getDepartment()); } }
Јава датотека главне класе
Следећи пример приказује главну датотеку за имплементацију МВЦ архитектуре. Овде користимо класу МВЦМаин.
МВЦМаин.јава
// main class public class MVCMain { public static void main(String[] args) { // fetching the employee record based on the employee_id from the database Employee model = retriveEmployeeFromDatabase(); // creating a view to write Employee details on console EmployeeView view = new EmployeeView(); EmployeeController controller = new EmployeeController(model, view); controller.updateView(); //updating the model data controller.setEmployeeName('Nirnay'); System.out.println(' Employee Details after updating: '); controller.updateView(); } private static Employee retriveEmployeeFromDatabase(){ Employee Employee = new Employee(); Employee.setName('Anu'); Employee.setId('11'); Employee.setDepartment('Salesforce'); return Employee; } }
Тхе МВЦМаин цласс преузима податке о запосленима из методе у коју смо унели вредности. Затим гура те вредности у модел. Након тога иницијализује поглед (ЕмплоиееВиев.јава). Када се приказ иницијализује, позива се контролер (ЕмплоиееЦонтроллер.јава) и повезује га са класом Емплоиее и класом ЕмплоиееВиев. Коначно, упдатеВиев() метода (метода контролора) ажурира податке о запосленима који ће бити одштампани на конзоли.
Излаз:
Employee Details: Name: Anu Employee ID: 11 Employee Department: Salesforce Employee Details after updating: Name: Nirnay Employee ID: 11 Employee Department: Salesforce
На овај начин смо научили о МВЦ архитектури, значају сваког слоја и његовој имплементацији у Јави.