Пример JAVA-приложения с использованием MVC В общем, не совсем понимаю как правильно разбить проект на Model, View и Controller. Если бы кто-нибудь накидал простенький пример, был бы очень благодарен. (View пишется с использованием Swing). Самая проблема возникает из-за того, что окон несколько и не совсем понятно как им взаимодействовать. И непонятно что в main пихать.
В общем, такой пример:
При запуске приложения открывается окно. В окне 2 кнопки. По нажатию одной выводится какой-нибудь текст, по нажатию другой — открывается новое окно (старое при этом убивается).
Во втором окне тоже 2 кнопки. Одна выводит текст, другая — выводит старое окно, а новое закрывает.
Как писать — понятно, мне непонятна именно архитектура.
Давайте посмотрим, как можно разбить это приложение на Model, View и Controller:
Model (Модель) - отвечает за хранение данных и бизнес-логику приложения. В данном случае у нас нет сложной логики, поэтому модель может быть просто классом, который содержит необходимые данные.
public class Model { // Здесь можно хранить данные (если они есть) и реализовывать бизнес-логику }
View (Представление) - отвечает за отображение данных и взаимодействие с пользователем. В данном случае мы будем использовать Swing для создания графического интерфейса.
import javax.swing.*; public class View { private JFrame frame; private JButton button1; private JButton button2; public View() { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); button1 = new JButton("Button 1"); button2 = new JButton("Button 2"); // Здесь можно добавить слушателей для кнопок // Например, button1.addActionListener(e -> { ... }) frame.add(button1); frame.add(button2); frame.setVisible(true); } // Метод для открытия нового окна public void openNewWindow() { frame.dispose(); // Создание и отображение нового окна } }
Controller (Контроллер) - связывает Model и View, обрабатывает взаимодействие пользователя с приложением, реализует логику работы.
public class Controller { private Model model; private View view; public Controller(Model model, View view) { this.model = model; this.view = view; // Добавляем слушателей для кнопок view.getButton1().addActionListener(e -> { // Действия по нажатию кнопки 1 }); view.getButton2().addActionListener(e -> { view.openNewWindow(); }); } }
Main (Главный класс приложения) - инициализирует Model, View и Controller и запускает приложение.
public class Main { public static void main(String[] args) { Model model = new Model(); View view = new View(); Controller controller = new Controller(model, view); } }
Надеюсь, что данный пример поможет вам понять, как разбить приложение на MVC и как организовать взаимодействие между его компонентами.
Давайте посмотрим, как можно разбить это приложение на Model, View и Controller:
Model (Модель) - отвечает за хранение данных и бизнес-логику приложения. В данном случае у нас нет сложной логики, поэтому модель может быть просто классом, который содержит необходимые данные.
public class Model {// Здесь можно хранить данные (если они есть) и реализовывать бизнес-логику
}
View (Представление) - отвечает за отображение данных и взаимодействие с пользователем. В данном случае мы будем использовать Swing для создания графического интерфейса.
import javax.swing.*;public class View {
private JFrame frame;
private JButton button1;
private JButton button2;
public View() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
button1 = new JButton("Button 1");
button2 = new JButton("Button 2");
// Здесь можно добавить слушателей для кнопок
// Например, button1.addActionListener(e -> { ... })
frame.add(button1);
frame.add(button2);
frame.setVisible(true);
}
// Метод для открытия нового окна
public void openNewWindow() {
frame.dispose();
// Создание и отображение нового окна
}
}
Controller (Контроллер) - связывает Model и View, обрабатывает взаимодействие пользователя с приложением, реализует логику работы.
public class Controller {private Model model;
private View view;
public Controller(Model model, View view) {
this.model = model;
this.view = view;
// Добавляем слушателей для кнопок
view.getButton1().addActionListener(e -> {
// Действия по нажатию кнопки 1
});
view.getButton2().addActionListener(e -> {
view.openNewWindow();
});
}
}
Main (Главный класс приложения) - инициализирует Model, View и Controller и запускает приложение.
public class Main {public static void main(String[] args) {
Model model = new Model();
View view = new View();
Controller controller = new Controller(model, view);
}
}
Надеюсь, что данный пример поможет вам понять, как разбить приложение на MVC и как организовать взаимодействие между его компонентами.