Страница 1 из 1

Однократная загрузка многократноиспользуемых данных

Добавлено: 22 сен 2014, 05:44
Agiliter
Добрый день! Столкнулся намедни с одной небольшой проблемой. Занимался написанием инвентаря. Существует класс Предмет, в который при создании передается только его itemID, а дальше все свойства загружаются с сервера из внешнего файла. Пока сделал, что файл-таблица свойств предметов по ID загружается каждый раз при создании экземпляров класса Предмет. Но это не кажется мне разумным. Гораздо логичнее было бы, чтобы он загрузился один раз, а дальше просто передавался в Класс предмет. Например, таблица загружается с сервера в классе Инвентарь, а затем передается в класс Предмет. Пока только такое решение придумал. Но опять таки. Класс Предмет может использоваться по всему приложению. В классах Инвентарь, Магазин, Персонаж и мало ли еще где. Кроме того, существуют и другие таблицы, внешние файлы, которые могут быть многократно использованы в разных частях приложения. Можно ли (и как, если можно) это как-то обыграть в приложении?

У меня только грубо получается придумать. Например, загрузить всё в классе Главный класс, передать в Класс2, затем внутри него в класс3 ... КлассN. Например, в Main создается Контроллер, в него сразу же передается таблица предметов, в контроллере инициализируется Модель, в которую передается таблица уже из Конроллера. В Модели создается Инвентарь, в который так же передается эта таблица Из Модели и т.д. Дофига уровней вложенности, различных таблиц использоваться может куча, и как тут за всем уследить, чтобы на каждый уровень передавать всё что нужно. Может существует какой-то способ хранить всё в каком-нибудь локальном хранилище? Чтобы загрузил туда, а потом брал из любого места приложения, не парясь с передаванием по уровнями и не общаясь непрерывно с сервером.

Re: Однократная загрузка многократноиспользуемых данных

Добавлено: 22 сен 2014, 17:56
XELAD
В классе Инвентарь создать static public var <имя>:<класс, который вы выберете>. В главном классе загрузить "файл-таблица свойств предметов по ID" , записать в Array/XML/Object/Dictionary (нужное подчеркнуть), к примеру в var SMTH, и/или передать в класс Инвентарь таким образом:

Код: Выделить всё

КлассИнвентарь.<имя> = SMTH;
Любые классы, в том числе инвентарь и предмет, смогут пользоваться данной переменной. Классы отличные от того, где содержится <имя> (в нашем случае отличные от инвентарь), смогут обращаться к <имя> таким образом (пример):

Код: Выделить всё

for(var i in КлассИнвентарь.<имя>){...
В классе инвентарь можно будет писать:

Код: Выделить всё

for(var i in <имя>){...