Во.
Есть интерфейс:

Код:
package {
public interface IDoer {
function doSomething():void;
}
}
Вот класс, который использует синглтон:

Код:
package {
public class User {
public function User() {
var doer1:IDoer = new Singleton();
var doer2:IDoer = new Singleton();
doer1.doSomething();
doer2.doSomething();
}
}
}
А вот непосредственно реализация синглтона:

Код:
package {
public class Singleton implements IDoer {
private var realDoer:IDoer;
public function Singleton() {
realDoer = RealSingleton.getInstance();
}
public function doSomething():void {
realDoer.doSomething();
}
}
}
internal class RealSingleton implements IDoer {
private var counter:int = 0;
private static var instance:RealSingleton;
public static function getInstance():RealSingleton {
if (!instance) instance = new RealSingleton();
return instance;
}
public function doSomething():void {
trace(counter+": Hello world!");
counter++;
}
}
Плюс такого подхода, в том, что никто извне не знает, что это синглтон.
Используют как обычный класс.
Таким образом, если мы решим отказаться от использования синглтона (например, потребуется несколько соединений к серверу), то меняем только один файл. Для остальных классов ничего не изменилось.
То есть уровень абстракции выше, переделка в обычный класс совершенно прозрачна.