У меня есть класс, который на данный момент довольно беспорядочный / повторяющийся:
public class AvFramework extends Object
{
// vars
private var _handler:AvHandler;
private var _keyboard:AvKeyboard;
private var _manager:AvManager;
/**
* Constructor
*/
public function AvFramework()
{
_handler = new AvHandler();
_keyboard = new AvKeyboard();
_manager = new AvManager();
// attach
_handler.framework = this;
_keyboard.framework = this;
_manager.framework = this;
}
/**
* Getters
*/
public function get keyboard():AvKeyboard{ return _keyboard; }
public function get manager():AvManager{ return _manager; }
}
Этот класс будет нуждаться только в использовании все большего количества классов, и я не очень хочуесть 3 огромных списка для этого, как указано выше.
Есть ли способ сделать это динамически - возможно, используя getDefinitonByName()
в цикле строк для представления классов, которые я хочу создать.
Я также хочу, чтобы свойства были доступны только для чтения и доступ к ним осуществлялся через framework.myDynamicVarHere
.
. Я думаю что-то вроде этого:
- Я создаю список классовЯ хочу создать экземпляры в паре с именем переменной, к которому они должны получить доступ.
- Мне нужно будет создать класс
dynamic
, чтобы я мог установить переменные с помощью this["var"] = new Blah();
Быстрый фрагмент того, куда движутся мои мысли:
var required:Object =
{
keyboard: "avian.framework.background.AvKeyboard",
manager: "avian.framework.background.AvManager",
handler: "avian.framework.background.AvHandler"
};
var i:String;
for(i in required)
{
var Req:Class = Class(getDefinitionByName(required[i]));
this[i] = new Req();
AvFrameworkObject(this[i]).framework = this;
}
Просто не уверен, как я смогу сделать их доступными только для чтения.