Among all design patterns, Singleton pattern is the most widely used and easiest pattern. It is very useful when combines with other design patterns like MVC. Singleton pattern provides 2 main features:

1. Only one class instance can be instantiated at any time.
2. The class has a global access point.

Consider the class below:

?View Code ACTIONSCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package {
	public class Singleton {
		// Properties
		private static var __instance:Singleton;
		// Constructor
		function Singleton() {
			init();
		}
		// Initial
		private function init():void {
			trace("This is Singleton");
		}
		// Get instance, singleton method
		public static function getInstance():Singleton {
			if (__instance == null){		
				__instance = new Singleton();
			}
			return __instance;
		}
	}
}

Use “getInstance()” class method to instantiate the class once where it will return an instance of the class which is also static property of the class.

?View Code ACTIONSCRIPT
1
var mySingleton:Singleton = Singleton.getInstance();

You can also use the shorthand as:

?View Code ACTIONSCRIPT
1
2
3
public static function getInstance():Singleton {
	return (__instance ? __instance : (__instance = new Singleton()));
}

If you want to pass the parameters, you can do as:

?View Code ACTIONSCRIPT
1
2
3
public static function getInstance(arg:Object):Singleton {
	return (__instance ? __instance : (__instance = new Singleton(arg)));
}

Remember to add arguments to your constructor too.

Happy patterning:)