flex单例有多种写法,只要能保证程序只有一份实例就行
第一种写法,也是常用的:
package com.deng
{
public class Singleton
{
private static var instance:Singleton;
public var test:int = 9;
public function Singleton()
{
if (instance == null)
{
instance=this;
}else{
throw Error("已经存在该类的实例!");
}
}
public static function getInstance():Singleton
{
if (instance == null)
{
instance=new Singleton();
}
return instance;
}
}
}
第2中写法,是利用在package外面定义一个类,那么此类只能在同一文件中被使用 :
package com.deng
{
public class SingletonFactory
{
private static var instance:Singleton2;
public function SingletonFactory()
{
}
public static function getInstance():Singleton2
{
if (_instance == null)
{
_instance=new Singleton2();
}
return _instance;
}
}
}
/**
* 写在包外面,只能被同一文件访问,这样写,在测试时只能这么写
* var a:* = SingletonFactory.getInstance();
* 因为在外面无法访问Singleton2,只能用星号代替,这些在写代码时,就无提示,可以先定义接口,然后再让Singleton2实现接口的方式
*/
class Singleton2
{
public var test:int = 9;
public function Singleton2()
{
}
}