erase(), clear() и size() для
Автор admin Воскресенье, 21 июня 2009 11:32
erase(), clear() и size() для произвольного добавления и удаления наблюдателей; тем самым обеспечивается необходимая гибкость на стадии выполнения. Большая часть работы происходит в вызове notifyObservers(). Если флаг changed() не был установлен, вызов не делает ничего. В противном случае он сначала сбрасывает флаг changed, чтобы предотвратить напрасную трату времени при повторных вызовах notifyObservers(). Это делается перед оповещением наблюдателей на тот случай, если вызовы update() приведут к изменениям в объекте Observable. Затем функция перебирает элементы множества и вызывает функцию update() каждого объекта Observer. На первый взгляд может показаться, что для управления обновлениями можно воспользоваться обычным объектом Observable. Но такое решение работать не будет; чтобы добиться какого-нибудь эффекта, вы должны создать класс, производный от Observable, и где-то в коде производного класса вызвать функцию setChanged(). Эта функция устанавливает признак изменения, чтобы вызов notifyObservers() действительно приводил к оповещению наблюдателей. А когда именно вызывать setChanged(), зависит от лог
Комментарии закрыты.
Последние комментарии