2007/05/23 | AS2.0 与 AS3.0 ___单例模式对比
类别(flash学习) | 评论(0) | 阅读(408) | 发表于 14:33

/**************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进行了设置****/

0

评论Comments

日志分类
首页[38]
flash学习[35]
图片收藏[1]
Apollo_Flex[2]