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