Model-View-Controller (MVC) добре відомий шаблон дизайну у сфері веб-розробки. Це спосіб організувати наш код. Він визначає, що програма або додаток має складатися з моделі даних, презентаційної інформації та керуючої інформації. Шаблон MVC потребує, щоб усі ці компоненти були розділені як різні об’єкти.
У цьому розділі ми обговоримо архітектуру MVC у Java, а також її переваги та недоліки та приклади для розуміння реалізації MVC у Java.
Що таке архітектура MVC в Java?
Конструкції моделі, засновані на архітектурі MVC, відповідають шаблону проектування MVC. Логіка програми відокремлена від інтерфейсу користувача під час проектування програмного забезпечення за допомогою модельних конструкцій.
Архітектура шаблону MVC складається з трьох рівнів:
У програмуванні на Java модель містить простий Класи Java , представлення, яке використовується для відображення даних, а контролер містить сервлети . Завдяки цьому поділу запити користувачів обробляються наступним чином:
- Клієнт (браузер) надсилає запит на сторінку контролеру на стороні сервера.
- Потім контролер викликає модель. Він збирає запитані дані.
- Потім контролер передає отримані дані на рівень перегляду.
- Тепер результат надсилається назад у браузер (клієнт) представленням.
Переваги архітектури MVC
Переваги архітектури MVC наступні:
- MVC має функцію масштабованості, яка, у свою чергу, сприяє зростанню програми.
- Компоненти прості в обслуговуванні, оскільки є менша залежність.
- Модель може повторно використовуватися кількома представленнями, що забезпечує повторне використання коду.
- Розробники можуть працювати з трьома рівнями (модель, подання та контролер) одночасно.
- Використовуючи MVC, додаток стає більш зрозумілим.
- Використовуючи MVC, кожен рівень обслуговується окремо, тому нам не потрібно працювати з масивним кодом.
- Розширення та тестування програми легше.
Реалізація MVC за допомогою Java
Щоб реалізувати шаблон MVC у Java, ми повинні створити наступні три класи.
Рівні архітектури MVC
Рівень моделі
Модель у шаблоні проектування MVC діє як рівень даних для програми. Він представляє бізнес-логіку програми, а також стан програми. Об’єкт моделі отримує та зберігає стан моделі в базі даних. Використовуючи рівень моделі, правила застосовуються до даних, які представляють концепції застосування.
Давайте розглянемо наступний фрагмент коду, який створює , який також є першим кроком для реалізації шаблону MVC.
Employee.java
// 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; } }
Наведений вище код просто складається з методів getter і setter для класу Employee.
Переглянути шар
Як видно з назви, представлення представляє візуалізацію даних, отриманих від моделі. Рівень перегляду складається з результатів програми або інтерфейсу користувача. Він надсилає запитані дані клієнту, які контролер отримує з рівня моделі.
Розглянемо приклад, де ми створюємо представлення за допомогою класу EmployeeView.
EmployeeView.java
// 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); } }
Рівень контролера
Рівень контролера отримує запити користувача від рівня перегляду та обробляє їх із необхідною перевіркою. Він діє як інтерфейс між моделлю та представленням. Потім запити надсилаються до моделі для обробки даних. Після обробки дані надсилаються назад до контролера, а потім відображаються в поданні.
Давайте розглянемо наступний фрагмент коду, який створює контролер за допомогою класу EmployeeController.
EmployeeController.java
// 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()); } }
Основний файл класу Java
У наступному прикладі показано основний файл для реалізації архітектури MVC. Тут ми використовуємо клас MVCMain.
MVCMain.java
// 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; } }
The MVCMain class отримує дані про співробітника з методу, у який ми ввели значення. Потім він вставляє ці значення в модель. Після цього він ініціалізує представлення (EmployeeView.java). Коли перегляд ініціалізовано, контролер (EmployeeController.java) викликається та прив’язує його до класу Employee та класу EmployeeView. Нарешті метод updateView() (метод контролера) оновлює відомості про співробітника, які будуть надруковані на консолі.
Вихід:
Employee Details: Name: Anu Employee ID: 11 Employee Department: Salesforce Employee Details after updating: Name: Nirnay Employee ID: 11 Employee Department: Salesforce
Таким чином ми дізналися про архітектуру MVC, значення кожного рівня та його реалізацію в Java.