Вопрос: Что же такое DoubleProperty? — КиберПедия 

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Вопрос: Что же такое DoubleProperty?

2022-10-10 44
Вопрос: Что же такое DoubleProperty? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: Вот что он реализует. Любое свойство все вот эти интерфейсы реализует.

 

Верхний интерфейс Observable – это возможность добавить подписчика, где есть addListener. Да мы видели ObservableCollection – вот он! addListener. Это он и есть. Это возможность как раз, чтобы из вне кто-то мог подписаться, если этот интерфейс реализован и мы ему будем сообщать – «я изменился!».

Класс SimpleDoubleProperty (и др. подобные ему) реализует интерфейс Property<T> и поддерживает lazyevaluation. Устанавливаем зависимость вызовом bind(), а затем меняем наблюдаемое свойство. Наше свойство станет недействительным. Если ещё несколько раз изменить наблюдаемое свойство, то ничего не изменится, а пересчёт произойдёт только при вызове (наше свойство).get()

 

Помните я говорил: «почему мы не можем сделать, чтобы у нас в коллекции Boxне могут сообщить, что они изменились?» - они не Observable. Вот возьми и сделай Boxс этими интерфейсами. И всё! У тебя будет возможность подписаться и знать, что элемент в самой коллекции поменялся. Вот круговую диаграмму, которую мы сегодня смотрели, да? Мы добавляли в него элемент. А представьте, что у меня внутри «понедельник» и «пятница» происходят изменения данных? Эта коллекция состоит из чисел. Раз! Они поменялись. Никто не скажет, что изменилось, потому что сами данные внутри объекта не Observable. Вот если бы это тоже сделать, то тогда мы бы могли не новый список создать и он заново отобразился бы, а существующий поменять и раз и диаграмма бы изменилась! Вот это нужно реализовывать – Observable. Но это старинный интерфейс Observable – он в Javaбыл с первой версии.

А вот еще новый метод внутри интерфейса Property! bind(). Это для связывания данных. Так что это новая задумка, новые свойства, новые интерфейсы. Что хорошего кроме того, что они позволяют сообщать об изменениях и могут участвовать в понятии dataBinding? А вот там внизу написана последняя строчка: Смотрите!

Класс SimpleDoubleProperty (и др. подобные ему) реализует интерфейс Property<T> и поддерживает lazyevaluation. Устанавливаем зависимость вызовом bind(), а затем меняем наблюдаемое свойство. Наше свойство станет недействительным. Если ещё несколько раз изменить наблюдаемое свойство, то ничего не изменится, а пересчёт произойдёт только при вызове (наше свойство).get()

Они поддерживают, те кто реализуют, этот интерфейс Property, ну например, SimpleDoubleProperty? Они поддерживают такое понятие, как lazyevaluation (поздняя оценка). Представьте. У нас есть свойство и оно сообщает, что оно изменилось. И если бы в этот момент нас дернули и сказали: «дай», а может быть нам нужно в БД для этого обращаться. Представьте, что у нас есть какой-то флажок и мы знаем, что информация изменилась. Мы всем сообщаем: «изменилось». А вдруг их это сейчас конкретно в данный момент не интересует? И вот эта технология, которая здесь между собой их связывает, она, как только появилась информация, что изменилось, она не лезет сразу и не пытается вытянуть оттуда эти данные, потому что если бы вы сразу обратились к ней и сказали: «дай!», а вам придется в БД лезть. Тогда бы в этом случае вы должны были бы каждый раз пересчитывать и обновлять эти данные, читать их откуда-то из БД.

А поздний вариант назначает следующее. Вот у вас изменились данные и вы всем сказали: «изменились!». И если им это не нужно, конкретно сейчас перерисовать, то они не будут вас дергать и вы не лезете, ничего не пересчитываете и из БД заданную информацию не читаете. Теперь представьте: у вас что-то изменилось, еще раз изменилось, и еще раз изменилось. И вот только в конце концов, когда вот непосредственно сейчас нужно обновить экран, они скажут: «ну ка отдавай данные». И вы только один раз дадите данные и только те, которые самые последние и один раз пересчитаете или обновите информацию из СУБД. Вот это означаете lazyevaluation.

Метод bind, который позволяет к элементу на экране пользовательского интерфейса привязать данные, которые у вас лежать в модели – это как раз поздняя оценка. Пока не скажешь «дай», bindсам не требует информацию из свойства, тем самым нагрузку на систему уменьшает.


Поделиться с друзьями:

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.