Архитектура MVC в Java

В области веб-разработки Model-View-Controller является одним из самых обсуждаемых шаблонов проектирования в современном мире веб-программирования. Архитектура MVC изначально была включена в две основные среды веб-разработки — Struts и Ruby on Rails.

Основные понятия:

  • Шаблон проектирования в разработке программного обеспечения — это метод решения часто возникающей проблемы при разработке программного обеспечения.
  • Проектирование модели, указывает, какой тип архитектуры вы используете для решения проблемы или разработки модели.
  • Существует два типа моделей проектирования: архитектура модели 1, архитектура модели 2 (MVC).

Что такое архитектура MVC в Java?

Проекты моделей, основанные на архитектуре MVC в Java, следуют шаблону проектирования MVC и отделяют логику приложения от пользовательского интерфейса при разработке программного обеспечения. Как следует из названия, шаблон MVC имеет три слоя:

  • Модель — представляет бизнес-уровень приложения.
  • Просмотр — определяет представление приложения.
  • Контроллер — управляет потоком приложения.

MVC архитектура

В контексте программирования Java модель состоит из простых классов , представление отображает данные, а контроллер состоит из сервлетов. Это разделение приводит к тому, что пользовательские запросы обрабатываются следующим образом:

  1. Браузер на клиенте отправляет запрос страницы контроллеру, присутствующему на сервере.
  2. Контроллер выполняет действие по вызову модели, тем самым извлекая необходимые данные в ответ на запрос.
  3. Затем контроллер передает полученные данные в представление.
  4. Представление отображается и отправляется обратно клиенту для отображения в браузере.

Разделение программного приложения на эти три отдельных компонента является хорошей идеей по ряду причин.

Преимущества архитектуры

Архитектура MVC предлагает множество преимуществ для программиста при разработке приложений, которые включают в себя:

  • Несколько разработчиков могут работать с тремя слоями (Модель, Вид и Контроллер) одновременно.
  • Обеспечивает улучшенную масштабируемость, которая дополняет способность приложения расти.
  • Поскольку компоненты имеют низкую зависимость друг от друга, их легко поддерживать.
  • Модель может быть повторно использована несколькими представлениями, что обеспечивает возможность повторного использования кода.
  • Принятие MVC делает приложение более выразительным и простым для понимания.
  • Расширение и тестирование приложения становится легким.

Реализация

Для реализации веб-приложения на основе шаблона проектирования MVC мы создадим:

  • Course Class, который выступает в качестве модельного слоя.
  • CourseView Class, который определяет уровень представления (уровень представления).
  • CourseContoller Class, который действует как контроллер.

Теперь давайте рассмотрим эти слои один за другим.

Слой модели

В шаблоне проектирования MVC модель представляет собой уровень данных, который определяет бизнес-логику системы, а также представляет состояние приложения. Объекты модели получают и сохраняют состояние модели в базе данных. На этом уровне мы применяем правила к данным, которые в конечном итоге представляют концепции, которыми управляет наше приложение. Теперь давайте создадим модель, используя Course Class.

package MyPackage;

public class Course {
	   private String CourseName;
	   private String CourseId;
	   private String CourseCategory;
	   
	   public String getId() {
	      return CourseId;
	   }
	   
	   public void setId(String id) {
	      this.CourseId = id;
	   }
	   
	   public String getName() {
	      return CourseName;
	   }
	   
	   public void setName(String name) {
	      this.CourseName = name;
	   }
	   
	   public String getCategory() {
		      return CourseCategory;
		   }
	   
	   public void setCategory(String category) {
		      this.CourseCategory = category;
		   }
	   
	}

Код прост для понимания и не требует пояснений. Он состоит из функций, чтобы получить/установить детали Course.

Уровень представления

Этот уровень шаблона проектирования MVC представляет выходные данные приложения или пользовательского интерфейса. Он отображает данные, извлеченные из слоя модели контроллером, и представляет данные пользователю при каждом запросе. Он получает всю необходимую информацию от контроллера и ему не нужно напрямую взаимодействовать с бизнес-уровнем. Давайте создадим представление, используя ClassView Class.

package MyPackage;

public class CourseView {
	   public void printCourseDetails(String CourseName, String CourseId, String CourseCategory){
	      System.out.println("Course Details: ");
	      System.out.println("Name: " + CourseName);
	      System.out.println("Course ID: " + CourseId);
	      System.out.println("Course Category: " + CourseCategory);
	   }
	}

Этот код просто для печати значений на консоль. Далее у нас есть контроллер веб-приложения.

Уровень контроллера

Контроллер похож на интерфейс между моделью и представлением. Он получает пользовательские запросы от уровня представления и обрабатывает их, включая необходимые проверки. Затем запросы отправляются в модель для обработки данных. После обработки данные снова отправляются обратно в контроллер, а затем отображаются в представлении. Давайте создадим ClassContoller Class, который действует как контроллер.

package MyPackage;

public class CourseController {
	   private Course model;
	   private CourseView view;

	   public CourseController(Course model, CourseView view){
	      this.model = model;
	      this.view = view;
	   }

	   public void setCourseName(String name){
	      model.setName(name);		
	   }

	   public String getCourseName(){
	      return model.getName();		
	   }

	   public void setCourseId(String id){
	      model.setId(id);		
	   }

	   public String getCourseId(){
	      return model.getId();		
	   }

	   public void setCourseCategory(String category){
		      model.setCategory(category);		
       }

		   public String getCourseCategory(){
		      return model.getCategory();		
	   }
	   public void updateView(){				
	      view.printCourseDetails(model.getName(), model.getId(), model.getCategory());
	   }	
	}

Беглый взгляд на код скажет нам, что этот класс контроллера просто отвечает за вызов модели для получения/установки данных и обновления представления на основе этого.

Класс Main

Давайте назовем этот класс «MVCPatternDemo.java». Проверьте код ниже.

package MyPackage;

public class MVCPatternDemo {
	   public static void main(String[] args) {

	      //fetch student record based on his roll no from the database
	      Course model  = retriveCourseFromDatabase();

	      //Create a view : to write course details on console
	      CourseView view = new CourseView();

	      CourseController controller = new CourseController(model, view);

	      controller.updateView();

	      //update model data
	      controller.setCourseName("Python");
	      System.out.println("nAfter updating, Course Details are as follows");

	      controller.updateView();
	   }

	   private static Course retriveCourseFromDatabase(){
	      Course course = new Course();
	      course.setName("Java");
	      course.setId("01");
	      course.setCategory("Programming");
	      return course;
	   }
	}

Приведенный выше класс извлекает данные Course из функции, используя которую пользователь вводит набор значений. Затем он помещает эти значения в модель Course. Затем он инициализирует представление, которое мы создали ранее в статье. Кроме того, он также вызывает класс CourseController и связывает его с классом Course и классом CourseView. Затем метод updateView(), являющийся частью контроллера, обновляет сведения о курсе на консоли. Проверьте вывод ниже.

Вывод

Course Details: 
Name: Java
Course ID: 01
Course Category: Programming

After updating, Course Details are as follows
Course Details: 
Name: Python
Course ID: 01
Course Category: Programming

Архитектура MVC обеспечивает совершенно новый уровень модульности вашего кода, что делает его более удобным для чтения и сопровождения. Это подводит нас к концу этой статьи. Надеюсь, вам понятно все, что с вами поделились.

Оцените статью