单例模式

有些类不需要有多个实例,只需要一个就行

1.

package
{
	public class Sington
	{
		private static var isClosing:Boolean = false;
		private static var linkSington:Sington;
		public function Sington()
		{
			if(isClosing)
			{
				//不实例化
			}
			else
			{
				throw new Error("不能实例化");
			}
		}
		public static function LinkSington():Sington
		{
			if(!linkSington)
			{
				isClosing = true;
				linkSington = new Sington();
				isClosing = false;
			}
			return linkSington;
		}
	}
}
//这样写有一个弊端,就是 isClose=true的同时另外一个地方实例化了这个类!

下面是测试

var cs2:Sington = Sington.LinkSington();
var cs3:Sington = Sington.LinkSington();
trace(cs2 === cs3);//输出为true

2.用包外类实现

package {
	public class Sington
	{
		private static  var linkSington:Sington;
		public function Sington(singletoner:Singletoner)
		{
			if (singletoner == null) 
			{
				throw new Error("不能实例化");
			}	
		}
		public static function LinkSington():Sington 
		{
			if (linkSington == null) 
			{
				linkSington = new Sington(new Singletoner());
			}
			return linkSington;
		}
	}
}
internal class Singletoner {}
原文地址:https://www.cnblogs.com/mzbdadou/p/2101175.html