Реализация реактивного шаблона в существующем коде - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь реализовать реактивные шаблоны в моем существующем приложении.

Поэтому я начинаю со слоя DAO.Как и любой другой уровень DAO, текущая реализация извлекает список сущностей из базы данных, используя JPA.

@Query(value = "SELECT e from MyEntity e WHERE....")
List<MyEntity> getMyEntities();

Теперь я могу сделать Observable from List.

Но Observable - это поток данныхкоторый является асинхронным и передает данные / события на лету.Но в этом случае список уже заполнен.

Итак, какие преимущества я получу от реактивной схемы в таких случаях использования?

1 Ответ

0 голосов
/ 25 июня 2018

Я думаю, что вы смотрите на это неправильно. По сути, вы спрашиваете что-то вроде этого: «Итак, я извлекаю некоторые данные из базы данных и возвращаю их как коллекцию. Если я изменю тип данных этой коллекции с перечислимого на наблюдаемый, какая польза от этого?» Очевидно, это не дает никакой выгоды.

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

Напротив, реактивная модель - это декларативное выражение вещей в ответ на изменения. Вы делаете это, объявляя полигон как функцию событий перемещения мыши в сочетании с событиями кнопки мыши. Полигон объявлен как функция этих вещей. Картинки являются функциями многоугольников. События хранения базы данных объявляются как функции изображений в сочетании с событиями сохранения пользовательского интерфейса, так же как полигоны являются функциями различных потоков событий мыши. Картинки также являются функциями событий загрузки. Обновления экрана - это функции изображений и т. Д.

Вы должны полностью изменить способ, которым вы думаете о «программах». В реактивной модели событие загрузки изображения приведет к потоку событий загруженных полигонов и обновлений экрана, причем все это может происходить одновременно с событиями рисования вашей мышью. Все это происходит в результате объявления вещей в модели вашего домена. Изображения, появляющиеся на экране, естественно выпадают из объявления о том, как события загрузки и события обновления экрана объявлены . Реагирование может произойти так: если бы загружалась огромная, детализированная картинка с миллионами полигонов, вы могли бы разбивать на страницы или транслировать свою нагрузку и позволить нагрузке продолжаться, пока пользователь сможет взаимодействовать с ней параллельно.

...