Исходя из того, что вы спрашиваете, звучит так, будто вы пытаетесь использовать тип Factory-pattern (Factory Method), где класс отвечает за динамическое создание объектов на основе информации, полученной из внешнего источника.
Я бы рекомендовал изучить шаблоны проектирования для Flex и ActionScript. Я еще не написал Фабричный метод во Flex, но он не может быть намного сложнее, чем Java, что не так уж и плохо.
В общем, вот как я мог бы ожидать, что ваша программа будет выглядеть так:
- Ваш XML описывает объект, который будет сгенерирован (тип класса, параметры и т. Д.). Ваш пример, кажется, показывает это.
- У вас есть XSD, который может проверить, что файл XML соответствует ожиданиям вашей программы - если это не так, будет выведена соответствующая ошибка. Я бы очень порекомендовал что-то в этом духе для проверки: вам нужен механизм, который гарантирует правильность XML.
- Вы абстрагировали ожидаемые значения в XML. Я бы порекомендовал использовать значения Enums или static / constant String в отдельном служебном классе.
- У вас есть класс Factory, единственной обязанностью которого является получение данных XML, генерация объектов на основе содержимого и возврат их тем, кто в них нуждается.
Четвертый пункт, очевидно, это то, что вы ищете или (я думаю). Пример CookieOfFortune показывает, как может выглядеть этот фабричный метод. Однако я бы порекомендовал вам также абстрагировать значения String в переменную или Enum:
...
var BALL_CLASS_TYPE:String = "Ball";
...
function createNewClass(var name:String):Object {
if (name == BALL_CLASS_TYPE)
return new Ball();
}
Ваш первый параметр, однако, сбивает меня с толку. Похоже, вы пытаетесь создать динамический объект с динамически именованным ссылкой на него (например, var <x>:Object
, где <x>
определяется как данные в XML). Я не знаю, возможно ли это вообще. Я бы, конечно, подумал, что в этом нет необходимости.