Я пытаюсь изучить JavaFX, потому что хочу использовать его в качестве графического интерфейса своей программы. Мой вопрос по сути концептуальный:
На сегодняшний день моя программа в основном представляет собой «Модельную» часть шаблона MVC; то есть почти весь мой код представляет собой объектно-ориентированное представление абстракций в смысле классов, и весь этот код представляет собой логический код.
Поскольку я не хочу быть единственным пользователем своей программы, я хочу добавить часть MVC «Просмотр», чтобы люди могли легко использовать и манипулировать частью «Модель» моей программы. Для этого я хочу использовать JavaFX.
В своих классах «Модель» я, очевидно, использую различные списки, карты и другие классы из API коллекций Java. Чтобы позволить пользователям моей программы манипулировать этими базовыми списками и картами, я хочу использовать интерфейсы Observable(List/Map) в JavaFX.
Конкретный пример, чтобы внести ясность в ситуацию:
Предположим, у меня есть класс MachineMonitor, который каждые 3 минуты проверяет определенные свойства машины, например, установлено ли соединение. хорошо, скорость вращения шестерен и т. д. Если соблюдаются определенные неравенства (скажем, скорость шестерен упала до 1 оборота в секунду), MachineMonitor запускает RestartMachineEvent.
В настоящее время я использую ArrayList для отслеживания всех отдельных MachineMonitor. Теперь, переходя к части MVC «Просмотр», я хочу, чтобы пользователь мог манипулировать TableView, который отображает список MachineMonitor, чтобы он мог, например, создавать и удалять новые MachineMonitor для мониторинга различных машин.
Чтобы я мог отслеживать, что хочет сделать пользователь моей программы (скажем, создать MachineMonitor для машины №5, который проверяет, падает ли скорость вращения шестерен в секунду ниже 0,5), я использую ObservableList в качестве базового списка для TableView.
Самый простой способ связать «Модель» и «Представление» моей программы означало бы просто изменить класс «Модель», чтобы он имел ObservableList, а не ArrayList, но (переходя к теме вопроса) я чувствую, что это очень беспорядочно, потому что он смешивает код «Модель» и «Представление».
Наивным подходом было бы использовать ObservableList для TableView и сохранить использование моего ArrayList. Однако изменения, внесенные в ObservableList, не влияют на базовый список согласно спецификациям JavaFX.
Учитывая это, лучший способ решить эту загадку — создать ChangeListener для ObservableList, который «распространяет» изменения, внесенные в ObservableList, на базовая «модель» ArrayList? Возможно, поместите это в класс под названием MachineMonitorController?
Это специальное решение кажется очень беспорядочным и неидеальным.
Мой вопрос: как лучше всего сохранить почти полное разделение между «Моделью» и «Представлением» в этом сценарии?
Подробнее здесь: https://stackoverflow.com/questions/236 ... ler-separa
Противоречит ли использование ObservableList в JavaFX разделению Модель-Представление-Контроллер? ⇐ JAVA
Программисты JAVA общаются здесь
1762935942
Anonymous
Я пытаюсь изучить JavaFX, потому что хочу использовать его в качестве графического интерфейса своей программы. Мой вопрос по сути концептуальный:[b]
На сегодняшний день моя программа в основном представляет собой «Модельную» часть шаблона MVC; то есть почти весь мой код представляет собой объектно-ориентированное представление абстракций в смысле классов, и весь этот код представляет собой логический код.
Поскольку я не хочу быть единственным пользователем своей программы, я хочу добавить часть MVC «Просмотр», чтобы люди могли легко использовать и манипулировать частью «Модель» моей программы. Для этого я хочу использовать JavaFX.
В своих классах «Модель» я, очевидно, использую различные списки, карты и другие классы из API коллекций Java. Чтобы позволить пользователям моей программы манипулировать этими базовыми списками и картами, я хочу использовать интерфейсы Observable(List/Map) в JavaFX.
Конкретный пример, чтобы внести ясность в ситуацию:[/b]
Предположим, у меня есть класс [i]MachineMonitor[/i], который каждые 3 минуты проверяет определенные свойства машины, например, установлено ли соединение. хорошо, скорость вращения шестерен и т. д. Если соблюдаются определенные неравенства (скажем, скорость шестерен упала до 1 оборота в секунду), [i]MachineMonitor[/i] запускает RestartMachineEvent.
В настоящее время я использую ArrayList для отслеживания всех отдельных [i]MachineMonitor[/i]. Теперь, переходя к части MVC «Просмотр», я хочу, чтобы пользователь мог манипулировать TableView, который отображает список [i]MachineMonitor[/i], чтобы он мог, например, создавать и удалять новые [i]MachineMonitor[/i] для мониторинга различных машин.
Чтобы я мог отслеживать, что хочет сделать пользователь моей программы (скажем, создать [i]MachineMonitor[/i] для машины №5, который проверяет, падает ли скорость вращения шестерен в секунду ниже 0,5), я использую ObservableList в качестве базового списка для TableView.
Самый простой способ связать «Модель» и «Представление» моей программы означало бы просто изменить класс «Модель», чтобы он имел ObservableList, а не ArrayList, но (переходя к теме вопроса) я чувствую, что это очень беспорядочно, потому что он смешивает код «Модель» и «Представление».
Наивным подходом было бы использовать ObservableList для TableView и сохранить использование моего ArrayList. Однако изменения, внесенные в ObservableList, не влияют на базовый список согласно спецификациям JavaFX.
Учитывая это, лучший способ решить эту загадку — создать ChangeListener для ObservableList, который «распространяет» изменения, внесенные в ObservableList, на базовая «модель» ArrayList? Возможно, поместите это в класс под названием MachineMonitorController?
Это специальное решение кажется очень беспорядочным и неидеальным.
Мой вопрос: как лучше всего сохранить почти полное разделение между «Моделью» и «Представлением» в этом сценарии?
Подробнее здесь: [url]https://stackoverflow.com/questions/23643898/does-the-use-of-observablelist-in-javafx-go-against-model-view-controller-separa[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия