Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос о правильной реализации паттерна MVC / 6 сообщений из 6, страница 1 из 1
19.12.2013, 00:26
    #38505950
djfedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о правильной реализации паттерна MVC
Здравствуйте, уважаемые спецы по 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
19.12.2013, 12:02
    #38506311
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о правильной реализации паттерна MVC
djfedor,

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


да никак.

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

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

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

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

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

Все работает как нужно.
...
Рейтинг: 0 / 0
19.12.2013, 23:38
    #38507228
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о правильной реализации паттерна MVC
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
23.12.2013, 21:12
    #38510449
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о правильной реализации паттерна MVC
Вот тут толково расписано об истории MVC
http://rsdn.ru/forum/design/5406934.1
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос о правильной реализации паттерна MVC / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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