Шаблон проектування MVC — це шаблон архітектури програмного забезпечення, який розділяє програму на три основні компоненти: модель, представлення та контролер, що полегшує керування та підтримку кодової бази. Це також дозволяє багаторазове використання компонентів і сприяє більш модульному підходу до розробки програмного забезпечення.
Важливі теми для шаблону проектування MVC
- Що таке шаблон проектування MVC?
- Компоненти шаблону проектування MVC
- Зв'язок між компонентами
- Приклад шаблону проектування MVC
- Переваги шаблону проектування MVC
- Недоліки шаблону проектування MVC
Що таке шаблон проектування MVC?
The Контролер перегляду моделі Шаблон проектування (MVC) визначає, що програма складається з моделі даних, інформації представлення та інформації керування. Шаблон вимагає, щоб кожен із них був розділений на різні об’єкти.
- Шаблон MVC розділяє завдання програми на три окремі компоненти, кожен з яких відповідає за певний аспект функціональності програми.
- Такий розподіл завдань полегшує підтримку та розширення програми, оскільки зміни одного компонента не вимагають змін інших компонентів.
Компоненти шаблону проектування MVC
1. Модель
Компонент Model у шаблоні проектування MVC (Model-View-Controller) представляє дані та бізнес-логіку програми. Він відповідає за керування даними програми, обробку бізнес-правил і відповідь на запити інформації від інших компонентів, таких як View і Controller.
2. Перегляд
Відображає дані з моделі для користувача та надсилає введені користувачем дані до контролера. Він пасивний і безпосередньо не взаємодіє з моделлю. Натомість він отримує дані від моделі та надсилає дані користувача контролеру для обробки.
3. Контролер
Контролер діє як посередник між моделлю та представленням. Він обробляє введені користувачем дані та відповідно оновлює модель, а також оновлює представлення для відображення змін у моделі. Він містить логіку програми, таку як перевірка вхідних даних і перетворення даних.
Зв'язок між компонентами
Наведений нижче потік зв’язку гарантує, що кожен компонент відповідає за певний аспект функціональності додатка, що призводить до більш зручної для обслуговування та масштабованої архітектури.
- Взаємодія користувача з View:
- Користувач взаємодіє з представленням, наприклад натискає кнопку або вводить текст у форму.
- Перегляд отримує дані користувача:
- Представлення отримує дані користувача та пересилає їх контролеру.
- Контролер обробляє дані користувача:
- Контролер отримує дані користувача від представлення.
- Він інтерпретує вхідні дані, виконує будь-які необхідні операції (наприклад, оновлення моделі) і вирішує, як реагувати.
- Модель оновлення контролера:
- Контролер оновлює модель на основі введення користувача або логіки програми.
- Модель сповіщає View про зміни:
- Якщо модель змінюється, це сповіщає View.
- Перегляд даних запитів із моделі:
- Представлення запитує дані від моделі, щоб оновити свій дисплей.
- Перегляд оновлень контролера:
- Контролер оновлює представлення на основі змін у моделі або у відповідь на введення користувача.
- Оновлений інтерфейс користувача View Renders:
- Представлення відображає оновлений інтерфейс користувача на основі змін, внесених контролером.
Приклад шаблону проектування MVC
Нижче наведено код вищезазначеної постанови проблеми з використанням шаблону дизайну MVC:
Давайте розберемо код компонентів:
1. Модель (Студентський клас)
Представляє дані (ім’я студента та номер списку) і надає методи доступу та зміни цих даних.
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. Перегляд (клас StudentView)
Позначає, як дані (подробиці студента) мають відображатися для користувача. Містить метод ( printStudentDetails>
), щоб надрукувати ім’я студента та номер списку.
Java
знайти в карті 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. Контролер (клас StudentController)
Діє як посередник між моделлю та представленням. Містить посилання на об’єкти Model і View. Надає методи оновлення моделі (наприклад, setStudentName>
, setStudentRollNo>
) і оновити представлення ( 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());> > }> }> |
>
>
Повний код для наведеного вище прикладу
Нижче наведено повний код для наведеного вище прикладу:
Java
як перетворити int на string у 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;> > }> }> |
>
>
Вихід
розширений цикл java
Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157> |
>
>
Переваги шаблону проектування MVC
- Відокремлення концернів: MVC розділяє різні аспекти програми (дані, інтерфейс користувача та логіку), що полегшує розуміння, підтримку та модифікацію коду.
- Модульність: Кожен компонент (модель, представлення, контролер) можна розробляти та тестувати окремо, сприяючи повторному використанню коду та масштабованості.
- Гнучкість: Оскільки компоненти незалежні, зміни в одному компоненті не впливають на інші, що дозволяє легше оновлювати та модифікувати.
- Паралельний розвиток: Кілька розробників можуть працювати над різними компонентами одночасно, прискорюючи процес розробки.
- Повторне використання коду: Компоненти можна повторно використовувати в інших частинах програми або в інших проектах, скорочуючи час і зусилля на розробку.
Недоліки шаблону проектування MVC
- Складність: Реалізація шаблону MVC може ускладнити код, особливо для простіших програм, що призведе до накладних витрат на розробку.
- Крива навчання: Розробники повинні розуміти концепцію MVC і способи її ефективної реалізації, що може вимагати додаткового часу та ресурсів.
- Накладні витрати: Зв’язок між компонентами (модель, подання, контролер) може призвести до накладних витрат, що вплине на продуктивність програми, особливо в середовищах з обмеженими ресурсами.
- Потенціал для надмірного проектування: У деяких випадках розробники можуть переробити програму, додавши непотрібні абстракції та шари, що призведе до роздутого коду, який важко підтримувати.
- Збільшена кількість файлів: MVC може призвести до більшої кількості файлів і класів порівняно з простішими архітектурами, що може зробити структуру проекту складнішою та важчою для навігації.