Когда вы создаете экземпляр Singleton, вы не используете «new», иначе это не будет Singleton, вы будете продолжать создавать экземпляры класса A.Чтобы ваш класс был Singleton, можно создать только один экземпляр. Таким образом, когда вы вызываете A в других классах, вы вызываете тот же экземпляр A.
Обычно вы используете метод getInstance, которыйлибо вернуть экземпляр класса Singleton, если такового не существует, либо вернуть ранее созданный экземпляр A.
Просмотрите это для получения дополнительной информации: http://www.gskinner.com/blog/archives/2006/07/as3_singletons.html
Обычно считается, что Singletonследует избегать, когда это возможно.Здесь вы найдете несколько постов, объясняющих, почему, вот пример:
Что такого плохого в синглетах?
В вашем примере вы можете сделать это, например:
class A
{
function add( params:Object , dispatcher:EventDispatcher )
{
c = params.a + params.b;
dispatcher.dispatchEvent( new MyEvent(c) );
}
}
class B
{
private var _dispatcher:EventDispatcher = new EventDispatcher();
function addSomething():void
{
var objectA:A = new A();
_dispatcher.addEventListener(MyEvent.ADD,onAddComplete);
var params:Object = {a:10 , b:20};
objectA.add(params , _dispatcher);
}
function onAddComplete(e:MyEvent):void
{
trace(e.something);
}
}