Применим ли шаблон «Пузырьки событий» к иерархической модели? - PullRequest
0 голосов
/ 04 октября 2010

Давайте рассмотрим следующий пример: у меня есть объект «Document», который содержит коллекцию объектов «Person», а каждый объект «Person» имеет коллекцию объектов «Address». Когда один из объектов «Адрес» изменяется, мне нужно вызвать метод на стороне сервера, чтобы вычислить оптимальный путь между всеми адресами человека (чей «Адрес» был изменен) и обновить пользовательский интерфейс. Мне нужно знать, что один из адресов был изменен и человек, адрес которого был изменен. Единственное решение, которое у меня есть, - это реализация какого-либо рода событий. Когда объект «Адрес» изменяется, он уведомляет родителя (объект «Человек») об изменении, «Человек» уведомляет «Документ». Теперь мы можем добавить слушателя в класс «Document» и выполнить необходимые действия. Недостаток этого подхода - мне приходится управлять «родительскими» ссылками для всех объектов в иерархии. Кто-нибудь может прокомментировать это решение? это хорошо? А может я тут что-то не так делаю?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

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

0 голосов
/ 05 октября 2010

Вы на правильном пути.

Когда вы создаете событие, просто установите для свойства bubbles значение true.

http://www.igorcosta.com/flex3/doc/flash/events/Event.html#bubbles

Вам нужно будет добавить прослушиватель событий в класс документа в ActionScript [если вы не определите метаданные события в классе Document], но он должен работать и пузыриться без проблем.

Если у вас нет веских причин для «поймать / переслать», я бы не стал заново создавать колесо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...