Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Можно ли использовать MVVM там, где нет data binding?

#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'е (как в старом добром дельфи - "без единной строчки кода"), там есть связывание с помощью своих библиотек (они потом прикрепляются к проекту).

Комментариев нет:

Отправить комментарий