Лучший способ - создать нечто, называемое «синглтон». Синглтон - это, довольно просто, статический класс без всех противных минусов статического класса. Это делает один экземпляр (или одну копию) доступным глобально, который затем будет действовать точно так же, как обычный экземпляр (потому что это так).
Синглтон возможен благодаря использованию статических переменных и функций. Статическая переменная / функция является частью класса , а не экземпляром. Таким образом, каждая переменная может быть только одна (есть только один класс), и все они доступны глобально. Хорошим примером статических функций и свойств является встроенный класс Math
. Вы получаете значение Пи так:
Math.PI
не так:
var math:Math = new Math();
math.PI
Как видите, метод принадлежит классу. Мы можем использовать это для создания синглтона, предоставив статическую функцию getInstance()
, которая будет доступна глобально и всегда будет возвращать один и тот же объект. Вот пример реализации синглтона:
package {
public class SingletonSample {
// The singleton instance
private static sharedSingleton:SingletonSample = null;
// The constructor. AS3 doesn't allow for private constructors
// so we have to protect it manually
public function SingletonSample() {
if (sharedSingleton != null)
throw new Error ("SingletonSample cannot be created with the new keyword. Use getInstance() instead.");
}
// The method that will get the actual instance
public function getInstance():SingletonSample {
if (sharedSingleton == null)
sharedSingleton = new SharedSingleton();
return sharedSingleton;
}
}
}
Помимо методов и переменных, определенных в образце, остальная часть класса может быть запрограммирована как обычно. Затем, когда вы хотите использовать класс в своем коде, вместо этого:
var instance:SingletonSample = new SingletonSample();
instance.doAThing(instance.aProperty);
сделать это:
var instance:SingletonSample = SingletonSample.getInstance();
instance.doAThing(instance.aProperty);
На самом деле, когда вы просто быстро вызываете методы, вам вообще не нужно создавать локальную переменную. Просто сделайте что-то вроде этого:
SingletonSample.getInstance.aQuickFunction();
Это все доступно глобально, при условии, что класс SingletonSample
был импортирован. Этот шаблон дизайна делает класс «менеджер», поэтому он, вероятно, будет соответствовать вашим потребностям. Имейте в виду, однако, что синглтоны, как правило, не годятся для того, чтобы на самом деле манипулировать объектами. Используйте их как менеджеров , которые предоставляют ссылки на другие вещи, своего рода «посреднический» класс, если хотите. Однако при правильном использовании они могут стать мощным и удобным инструментом в арсенале программиста.