#java #swing #mvvm
На Википедии про MVVM написано: MVVM удобно использовать вместо классического MVC и ему подобных в тех случаях, когда в платформе, на которой ведётся разработка, присутствует «связывание данных». Объясните, пожалуйста, что такое связывание данных? В сети совсем мало информации. Я могу привести свои догадки на примере Delphi. Там можно поместить на форму DBGrid, и данные из базы будут попадать в него. То есть, они будут как бы привязаны к нему. Но, если, конечно, в настройках правильно все прописать. Это и есть связывание данных? Тогда, как я понимаю, в Java Swing нет никакого data binding. Можно ли там использовать MVVM? В принципе, можно, наверное, просто самому написать функции bind и backBind, в которых нужные данные туда-сюда передавать? Если можно, то стоит ли? Или лучше MVC или MVP? Понимаю, что так однозначно сказать нельзя, от ситуации, наверное, зависит. У меня десктопный проект с небольшой базой данных (JDBC и MySql), но графический интерфейс довольно объемный и сложный, с большим количеством функций. Предметная область для моего приложения — сложная алгоритмическая задача (задача о ранце, кому интересно). Подскажите пожалуйста, что в моей ситуации лучше использовать — MVC, MVP или MVVM (опыта ни в чем из этого не имею).
Ответы
Ответ 1
Шаблон MVVM больше ориентирован на технологии .Net от Microsoft, в частности под язык разметки XAML. В WPF или Silverlight привязка данных имеет большое значение, трудно представить серьёзное приложение без механизма привязок (bindings). Есть альтернатива на Java - платформа JavaFX. Привязка подразумевает взаимодействие двух объектов: источника и приемника. Объект-приемник создает привязку к определенному свойству объекта-источника. В случае модификации объекта-источника, объект-приемник также будет модифицирован (поведение зависит от типа привязки). Всего есть 4 типа привязок. • OneWay: свойство объекта-приемника изменяется после модификации свойства объекта-источника. • OneTime: свойство объекта-приемника устанавливается по свойству объекта-источника только один раз. В дальнейшем изменения в источнике никак не влияют на объект-приемник. • TwoWay: оба объекта - применки и источник могут изменять привязанные свойства друг друга. • OneWayToSource: объект-приемник, в котором объявлена привязка, меняет объект-источник. • Default: по умолчанию (если меняется свойство TextBox.Text, то имеет значение TwoWay, в остальных случаях OneWay). ПримерСамому написать механизм с такой функциональностью будет не просто. Смотрите на платформу JavaFX, если выберите MVVM и Java. Если .Net то WPF или универсальные приложения под windows 10. Делая Web приложение посоветую Spring MVC. Ответ 2
На счет какой того какой паттерн использовать я особо ничего сказать не могу. Если нужен красивый, высоконагруженный интерфейс, я бы использовал JavaFX, а там классический паттерн MVC. А на счет связывания данных, такую фичу я встречал в NetBeans'е (как в старом добром дельфи - "без единной строчки кода"), там есть связывание с помощью своих библиотек (они потом прикрепляются к проекту).
Комментариев нет:
Отправить комментарий