Как хранить данные в приложении javafx

Это мой первый пост, поэтому он может быть немного неуместным. Я пытаюсь разработать приложение на JavaFX, чтобы восстановить свои навыки программирования прошлых лет.

Я пытаюсь создать приложение JavaFX, состоящее из нескольких представлений и контроллеров, таких как Controller1, View1, Controller2, View2 и так далее. Я также включил основной класс для процесса запуска в свое приложение. Я пытаюсь разработать это обучающее приложение с помощью шаблона проектирования MVC.

Мой вопрос: как хранить данные между контроллерами и представлениями? В настоящее время мои данные хранятся в списке объектов, т.е. Событии в Controller1 (MainwindowController), а затем, если я хочу что-то сделать с этим списком, например добавить в него новый элемент из другого окна, я передаю список конструктором Controller2. Я обнаружил, что это несколько проблематично, потому что я передаю весь список между Controller1 и Controller2, но я действительно не хочу делать это таким образом.

Есть ли способ хранить данные, которые были бы доступны для всех контроллеров в экземпляре, без бесцельной передачи данных между ними?

Я знаю, что это глупый вопрос, но для меня это довольно сложно понять.

Заранее большое спасибо за любые подсказки подсказок :)


person Icarium    schedule 12.08.2016    source источник
comment
Чтобы вручную использовать общий экземпляр модели среди нескольких контроллеров, см. stackoverflow.com/questions/32342864. Если вы хотите автоматизировать это, вам следует подумать об использовании фреймворка Dependency Injection. Общие DI-фреймворки включают Spring и Guice, которые прекрасно работают с JavaFX; для среды, специфичной для JavaFX, взгляните на afterburner.fx.   -  person James_D    schedule 13.08.2016
comment
Спасибо большое за совет :D   -  person Icarium    schedule 14.08.2016


Ответы (1)


Если вы используете шаблон mvc, ваши данные должны находиться на уровне модели и вызывать его из контроллеров. Если ваши данные находятся в классе контроллера и вы не хотите передавать все данные между ними, вы можете использовать статические члены.

person Mushtu    schedule 12.08.2016
comment
Спасибо большое за совет :D - person Icarium; 14.08.2016