Показать сообщение отдельно
Старый 22.02.2012, 23:44
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Инициализация статик классов непредсказуема.
Но можно гарантировать выполнение кода перед обращением ленивой инициализацией:
Код AS3:
public static getElement():MovieClip
{
    if (!_inited)
    {
        init();
    }
    ...
    return _element;
}
Соответсвенно все присваивания статичным полям поместить в этот init().
Однако, если у тебя есть несколько статических классов, ссылающихся при инициализации друг на друга - разработка обещает быть весёлой

У нас в проекте существуют и статичные классы без состояния(т.е. без методов) - с ними таких проблем не возникает, и с минимальным состоянием - это статические фабрики объектов.
Но у нас нет одного статического класса, которому нужна инициализация другого статического - это перебор, нельзя так активно генератор косяков под названием "статичный класс" использовать.

Ещё можно у каждого статик-класса создать метод init(). И вызвать при старте приложения все init() в нужном порядке - это сделает код гораздо прозрачнее.
Но все присваивания полям должны быть либо линивыми либо в коде init()!


Последний раз редактировалось expl; 22.02.2012 в 23:52.