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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

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

2022-10-10 45
Вопрос: Что же такое 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 с.