Почитав книжку Foe, Object-Oriented Actionscript 3.0 (2007) долгое время использовал их версию синглтона

Код:
package {
public class Singleton {
private static var instance:Singleton;
private static var allowInstance:Boolean;
public function Singleton() {
if(!allowInstance) {
throw new Error("Error: use Singleton.getInstance() instead of new keyword");
}
}
public static function getInstance(fg):Singleton
{
if(instance == null) {
allowInstance = true;
instance = new Singleton();
trace("Singleton instance created");
allowInstance = false;
} else {
trace("Singleton instance already exists");
}
return instance;
}
public function doSomething():void {
trace("doing something");
}
}
}
В последнем проекте решил не использовать этот паттерн вовсе, никаких неудобств пока не обнаружил.
В каких конкретных случаях из практики использование этого паттерна необходимо?
И какие причины против его использования?