Прости мне моё занудство. Я на принципиальном уровне идею прекрасно понимаю (и имею опыт работы с реляционными СУБД как пользователь), но чего-то никак в голову не укладывается практическая реализация в создаваемой программе.
Цитата:
Сообщение от Tails
Списки с доступом данных по id или перечислением. Хранят соответствующие записи сущностей: AttackType, Attack и Unit соответственно.
|
Не совсем понимаю, что ты подразумеваешь под списками. Или это и есть те самые классы, которые непосредственно взаимодействуют с json-таблицами?
Я себе как представлял твой пример. Класс атаки примерно такой:
Код AS3:
public class Attack
{
private var _id: uint;
private var _type: uint;
private var _damage: int;
private var _cooldown: uint;
public function Attack (id: uint)
{
_id = id;
var jsonData: Object = JsonAttackData.getData(_id);
_type = jsonData[type];
_damage = jsonData[damage];
_cooldown = jsonData[cooldown];
}
То есть в момент, когда нам требуется данная атака, программа создаёт экземпляр приведённого мной класса,
который получает в конструктор требуемый id, по нему ломится в класс-парсер, обслуживающий соответствующую json-таблицу, и получает от статического метода все остальные данные из таблицы.
Цитата:
Метод списка, добавляет новую запись.
|
Добавляет куда? В json-таблицу?
Цитата:
Интерфейс, который Intarface? (Конструкция языка AS3) Нет, список - это просто обёртка над Object или Vector, с некоторыми публичными методами для удобной работы с данными. (Доступ записи по ID, как минимум)
|
Ну да, который конструкция. Если у разных классов одинаковый публичный метод add(), то это похоже на использование интерфейса. Или это всё-таки не разные классы, а наследники?
Цитата:
Это отдельный вопрос, я его тут никак не освещал. Парсер будет отдельным классом. Статики - плохо, лучше использовать обычный экземпляр класса, если нет конкретных причин для статики. Из соображений невозможности наследования статиков.
|
Не понимаю, как этого можно добиться. Если у наших таблиц разное число полей и данные в них могут быть разного типа, то как ещё сделать можно? Один базовый класс и пачку наследников - по одному на каждый вид таблицы? Они же должны ещё "знать" и названия полей таблиц.