powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос о правильной реализации паттерна MVC
6 сообщений из 6, страница 1 из 1
Вопрос о правильной реализации паттерна MVC
    #38505950
djfedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые спецы по Java)

Столкнулся тут с одной проблемой при реализации... нужна подсказка!

Задача:
Реализовать SWING-овое окошко с кнопкой и табличкой. Нажимаем на кнопку - в табличке появляется некий список имен файлов (книг) из определенной директории, подходящих по маске. Путь и маску читаю в конфиге.

Что у меня получилось:

Код: java
1.
2.
3.
4.
class Book 
{
   // класс книг, основные поля название/размер
}



Код: java
1.
2.
3.
4.
5.
6.
class Model 
{
  
  // поиск книг в директории по маске, возвращает этот список книг

}



Код: java
1.
2.
3.
4.
5.
6.
7.
class View
{

  // конструктор без параметров, где отрисовывается форма с кнопкой и
  // создается табличка наследуемая от AbstractTableModel, со вбитыми полями класса Book

}



Код: java
1.
2.
3.
4.
5.
6.
7.
class Controller 
{
  
  // реализую ActionListener кнопки где происходит 
  // чтение конфига, заполнение списка книг через класс Model

}



Что я не могу понять:

Как мне передавать список книг из Controller во View, не нарушая при этом паттерн MVC?

Программа работает, если данные заполнять о книгах заполнять не в Controller, а в View, но тогда весь смысл Controller-а пропадает.

Пробовал создавать во View поле-список book, заполнять его в Controller, но при запуске вылетает NPE, т.к. форма отрисовывается раньше этого заполнения...

Туплю очень, подскажите, что не так.

Спасибо заранее!
...
Рейтинг: 0 / 0
Вопрос о правильной реализации паттерна MVC
    #38506311
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djfedor,

Как мне передавать список книг из Controller во View, не нарушая при этом паттерн MVC?


да никак.

ты не должен этого делать вообще. контроллер и вью вообще друг по друга знать ничего не должны.
ты должен сохранить список книг в модели, а затем модель должна дать команду всем вьюхам обновиться.
...
Рейтинг: 0 / 0
Вопрос о правильной реализации паттерна MVC
    #38506326
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть мнение, что слово "Паттерн" не правильно трактуется и это создаёт массу проблем в проектировании систем. "Паттерн" это не руководство к действию. Это некий часто используемый подход, которому дано имя для того чтобы разработчики могли лучше друг друга понимать, используя эти термины.

Поэтому зачем натягивать ненатягиваемое на Swing мне не понятно. Swing сам по себе не pure MVC это раз. Pure MVC хорошо подходит для web, но имеет недостатки при использовании в GUI. Поэтому для GUI часто используются альтернативы вида MVP и MVVM.

Зачем вообще что-то изобретать когда Swing сам по себе диктует дизайн приложения? Попробуйте для начала просто следовать дизайну Swing, а потом уже думайте что можно делать лучше или хуже.
...
Рейтинг: 0 / 0
Вопрос о правильной реализации паттерна MVC
    #38507195
djfedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv и Blazkowicz , большое вам спасибо!

Я вчера очень тупил, написал невнимательно код.

Сегодня на свежую голову посмотрел снова и понял в чем был не прав.

Все работает как нужно.
...
Рейтинг: 0 / 0
Вопрос о правильной реализации паттерна MVC
    #38507228
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
djfedor, MVC pattern - пример

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public 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; 
 } 
} 




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class StudentView { 
 public void printStudentDetails(String studentName, String 
studentRollNo){ 
 System.out.println("Student: "); 
 System.out.println("Name: " + studentName); 
 System.out.println("Roll No: " + studentRollNo); 
 } 
} 




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public 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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class MVCPatternDemo { 
 public static void main(String[] args) { 
 
 //fetch student record based on his roll no from the database 
 Student model = retriveStudentFromDatabase(); 
 
 //Create a view : to write student details on console 
 StudentView view = new StudentView(); 
 
 StudentController controller = new StudentController(model, view); 
 
 controller.updateView(); 
 
 //update model data 
 controller.setStudentName("John"); 
 
 controller.updateView(); 
 } 
 
 private static Student retriveStudentFromDatabase(){ 
 Student student = new Student(); 
 student.setName("Robert"); 
 student.setRollNo("10"); 
 return student; 
 } 
} 
...
Рейтинг: 0 / 0
Вопрос о правильной реализации паттерна MVC
    #38510449
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут толково расписано об истории MVC
http://rsdn.ru/forum/design/5406934.1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос о правильной реализации паттерна MVC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]