В моем текущем приложении есть класс DataMgr, в который я помещаю все, что связано с данными. Этот класс в последнее время стал слишком большим, и я хочу разделить его на более мелкие части для облегчения обслуживания.
Вот о чем я думаю:
Создайте класс AbstractDataMgr, который будет иметь все переменные, к которым будет обращаться везде в приложении. Например, коллекция ArrayCollection usersList, которая будет содержать всех пользователей.
Все меньшие части DataMgr будут расширять AbstractDataMgr. Пример, класс UsersDataMgr, который расширяет AbstractDataMgr. Таким образом, UsersDataMgr загружает и заполняет список usersList в AbstractDataMgr. Другой пример, класс SessionDataMgr, который заботится о некоторых игровых сессиях, которые происходят в моем приложении.
Мои вопросы:
Я на правильном пути?
Я хочу поместить каждый меньший класс DataMgr в отдельный модуль для ускорения времени компиляции. Таким образом, когда я компилирую SessionsModule, он не будет смотреть на UsersModule и, следовательно, будет меньше времени компиляции.
И это мой вопрос, для которого я начал эту тему: когда внутри SessionsModule, как получать информацию о пользователях из UsersDataMgr (например, вызывая функцию getUserData) без необходимости импортировать UsersDataMgr в SessionsDataMgr. Потому что, если я импортировал его, он будет скомпилирован в SessionsDataMgr ... который я не хочу.
Надеюсь, я вас не смутил и надеюсь найти помощь.
ОБНОВЛЕНИЕ 1:
Итак, основная проблема в том, что у меня есть большое приложение, которое было плохо спроектировано до моего прихода. Сейчас я пытаюсь сделать вещи лучше и проще.
В настоящее время компиляция полного приложения занимает много времени (около 3-3: 30 мин.). Это связано с несколькими проблемами:
1. Слишком много файлов в платформе, которые нужно проверять на наличие изменений каждый раз, когда я компилирую приложение.
2- Некоторые из этих файлов содержат большой объем данных (например, одна из информационных таблиц жестко запрограммирована в большой толстый массив внутри файла размером 7,5 МБ).
Так что в настоящее время мне требуется много времени, чтобы исправить ошибки, и это из-за долгого времени компиляции. Поэтому я попытался решить эту проблему, разбив приложение на модули. После создания трех модулей я обнаружил, что время компиляции каждого модуля также занимает много времени (около 2 минут) ...
В дополнение к этой проблеме, теперь вместо одного SWF большого размера у меня есть 3 других SWF с большим размером. Поэтому я решил полностью удалить фреймворк из этих модулей и включить только необходимые файлы. Вначале все выглядело хорошо, пока я не включил DataMgr ... после чего мне пришлось включить всю инфраструктуру, чтобы компилировать без ошибок. Это связано с тем, что DataMgr импортирует в него множество фреймворков.
Итак, мой второй шаг в решении этой проблемы - разделить DataMgr. Мне нравится ваше предложение, и именно так я планировал это сделать ... Однако у меня все еще остается один вопрос без ответа:
Мое намерение иметь модули и разделять DataMgr состоит в том, что я не хочу включать полную структуру в каждый модуль. Скорее только необходимые файлы. Однако, если в модуле SessionsDataMgr я бы вызвал:
UsersDataMgr.getInstance (). GetUserInfo (userId);
Это означает, что я должен импортировать UsersDataMgr внутри SessionsDataMgr ... что также означает (если я правильно понимаю), что при компиляции UsersDataMgr компилятор проверит все файлы модуля SessionsModule, но также проверит все файлы в SessionsDataMgr. Это увеличит размер файла SWF и увеличит время компиляции.
- Мое понимание того, как все работает правильно?
- Есть ли решение этой проблемы, чтобы иметь возможность полностью отделить оба модуля, но в какой-то момент иметь возможность выполнять пользовательские функции от другого модуля?
Извините за длинный ответ, и спасибоза вашу помощь.