/**************author:ycccc8202**************/
/***************2.0单例模式*******************/
class Singleton {
private function Singleton() {
}
public static function getInstance():Singleton {
if (arguments.callee.__INSTANCE == undefined) {
arguments.callee.__INSTANCE = new Singleton();
}
return arguments.callee.__INSTANCE;
}
}
/*********************************************/
/*******test*******/
var single1:Singleton=Singleton.getInstance()
var single2:Singleton=Singleton.getInstance()
trace(single1==single2)
/******************/
/******************3.0的单例模式*******************/
package {
import flash.display.Sprite;
public class SingletonExample extends Sprite
{
public function SingletonExample()
{
var single1:Singleton=Singleton.getInstance()
var single2:Singleton=Singleton.getInstance()
trace(single1==single2)
try{
var single:Singleton=new Singleton()}
catch(e:Error){
trace(e)}
}
}
}
class Singleton
{
private static var __INSTANCE:Singleton
private static var __ALLOW:Boolean=false
public function Singleton(){
if(__ALLOW==false){
throw new Error("不能通过new创建实例!");
}
return;
}
public static function getInstance():Singleton{
if(__INSTANCE==null){
__ALLOW=true
__INSTANCE=new Singleton()
__ALLOW=false
}
return __INSTANCE
}
}
/**************************************************/
/****AS3主要是由于构造函数必须为public,所以用throw进行了设置****/