| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Как лучше организовать отслеживание живых форм? |
| Автор: ZVano 18.4.2011, 15:16 | ||
| Топик создан в связи с отклонением от темы http://forum.vingrad.ru/forum/topic-327143/kw-dynamic-cast.html. Давайте обсудим как лучше организовать программу-оболочку, чтобы ядро знало какие формы определенных классов живы. Варианты: 1. Каждая форма определенного класса при создании должна помещать себя в список форм, а при уничтожении убирать себя из этого списка.
Достоинства: * максимальное быстродействие; * при правильном использовании гарантируется достоверность информации. Недостатки: * необходимо в конструктор\деструктор всех форм вставлять строчки добавления\удаления указателей форм в "active_forms". * информация недостоверна, если программист забыл добавить строчки в конструктор\деструктор. 2. Подход 1 с той разницей, что программистом создается форма-шаблон, от которой наследуются все остальные формы. Достоинства: те же, что у подхода 1. Недостатки: ?Вроде, нет? 3. Мониторинг форм. По таймеру мониторить все формы, по косвенным признакам определять класс. На основе полученой информации обновлять списки указателей на формы. Достоинства: * при создании форм не нужно следовать определенной схеме (как в методе 1) * метод не зависит от ошибок программистов (как в методе 1) * форма не обязана быть наследником от какого-то класса (как в методе 2). В класс предка можно поместить что-то более полезное. * метод гарантирует достоверность информации на момент последнего сканирования (при условии, что эту информацию можно получить) Недостатки: * информация достоверна на момент последнего сканирования. * расход ресурсов на постоянный мониторинг * способ неработоспособен, если форма не имеет признаков, по которым можно определить ее класс. |