欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Actionscript 3.0中Singleton實現(xiàn) 修正篇

 更新時間:2009年02月16日 12:38:03   作者:  
說明:上一篇"一個簡單的Actionscript的單態(tài)模式類"的實現(xiàn)在Actionscript中報錯,具體原因會在這篇Blog中詳細說明。
在前面的blog中,代碼如下:
復制代碼 代碼如下:

package Src
{
/**
* Written by Leezhm, 10th February, 2009
* Contact : Leezhm@126.com
*
* An example of singleton class
**/
public class CSingleton
{
// variable
private static var _instance = new CSingleton();
protected function CSingleton()
{
}
public static function getInstance():CSingleton
{
if (undefined != CSingleton._instance)
{
return CSingleton._instance;
}
else
{
throw Error("Could not create the instace!");
}
}
}
}

Rebuild會出現(xiàn)1153:A constructor can only be declared public.錯誤,錯誤原因在錯誤描述語句描述的很清楚,也就是Constructor在Actionscript中只能聲明為public。而我當時寫的時候,犯了習慣性的錯誤,因為我學習的C++和C#中寫singleton pattern總是將constructor聲明為protected或者private,所以也就"理所當然"地這樣寫了(還是應該好好重視每種編程語言的基礎,雖然都是標準的OO語言,但應該還是各有自己的特色的,不然也就沒吸引力了)。既然這樣,我們就無法保證用戶不用new來創(chuàng)建singleton class對象了,在我思考中,同QQ群上一位網(wǎng)友討論了哈,他給我推薦了一種解決方案,如下:
復制代碼 代碼如下:

Public function CSingleton()
{
Throw Error("error!");
}

但后來通過自己的測試,發(fā)現(xiàn)這樣是不行的,Actionscript的異常機制貌似跟C#和C++不同,其實還是創(chuàng)建了對象,即使拋出了Exception(當然我沒有很深入的測試,也許結(jié)果并不正確,但這里我要推薦另一種在Actionscript中實現(xiàn)singleton pattern的方法)。后來自己在網(wǎng)上找到一本好書《Advanced Actionscript 3 with Design Pattern》,在它的Part III中的Chapter 4中找到了關(guān)于Actionscript中singleton的討論。

由于我們沒法把constructor聲明為private,那就可以給constructor傳遞一個private的variable,同樣可以達到不能new的目的。但是怎么樣才能讓一個只對singleton class有private作用域的variable呢,我們要注意Actionscript的一些規(guī)則,比如在一個AS文件中只能有一個Package,一個和AS文件同名的Main Class。但我們在AS文件的包外聲明一個class,而且這樣聲明的class只對package中的class有作用域,對包外是不可見的。所以可以如下來寫這個Singleton class:
復制代碼 代碼如下:

package Src
{

/**
* Written by Leezhm, 14th February, 2009
* Contact : Leezhm@126.com
*
* An example of singleton class
**/

public class CSingleton
{
// variable
private static var _instance = new CSingleton(new SingletonEnforcer());

public function CSingleton(enforcer:SingletonEnforcer)
{
}

public static function getInstance():CSingleton
{
if (undefined != CSingleton._instance)
{
return CSingleton._instance;
}
else
{
throw Error("Could not create the instace!");
}
}

}
}

class SingletonEnforcer {}

BTW: 順便附上一張電子書中關(guān)于Actionscript 3中Singleton Pattern Class講解的照片,如下:
Actionscript 3 Singleton Pattern Class

相關(guān)文章

  • 火山動態(tài)文本滾動條V5[AS3版]

    火山動態(tài)文本滾動條V5[AS3版]

    功能說明:本版滾動條除了繼續(xù)保持體積?。ㄐ∮?K),界面容易修改,資源占用率小的優(yōu)勢外,主要有以下幾點改進: 1,使用AS3編寫。 2,寬高動態(tài)指定。 3,增加滾動條背景點擊事件。 4,消除了鼠標滾輪無法同時準確控制多個文本框的重大BUG。
    2008-03-03
  • ActionScript 3.0 編程體驗

    ActionScript 3.0 編程體驗

    日前,Adobe公司發(fā)布了Flash的最新版本Flash Professional 9 ActionScript 3.0 Preview,這是Flash 9的預覽版,正式版本估計要到2007年才會推出,
    2008-03-03
  • as3 rollOver or mouseOver使用說明

    as3 rollOver or mouseOver使用說明

    rollOver與mouseOver同樣在鼠標移到目標上時觸發(fā)事件,細微區(qū)別在于,mouseOver的bubbles等于true,而rollOver的bubbles是false.
    2009-10-10
  • AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題

    AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題

    AS3 navigateToURL導致ExternalInterface 執(zhí)行失敗問題
    2009-02-02
  • 編寫高效率的AS3代碼的小技巧

    編寫高效率的AS3代碼的小技巧

    最近我研究了一些AS3代碼優(yōu)化的文章,一般都是集中在研究loops 和 Number types上的,本文不在重復類似的測試
    2009-02-02
  • Actionscript 3.0 鼠標事件

    Actionscript 3.0 鼠標事件

    這本書是一本經(jīng)典的書籍,說實話一些小的AS3的項目是做了好幾個,基本的語法也都知道(其實有面向?qū)ο缶幊陶Z言的基礎后再入門一門新的語言還是很快的)?,F(xiàn)在找到了這邊經(jīng)典書籍完整版,就好好看看,順便寫一些總結(jié)。
    2009-02-02
  • AS3打開新窗口不被屏蔽的代碼

    AS3打開新窗口不被屏蔽的代碼

    有時候flash打開的網(wǎng)址會出現(xiàn)被屏蔽的現(xiàn)象,如何能輕松的打開而不被屏蔽呢,下面是具體的代碼。
    2010-08-08
  • AS3中的反射(速記) 分析

    AS3中的反射(速記) 分析

    詳細了解AS3的反射,請google相關(guān)文章,這里只是速記一下
    2008-03-03
  • AS3自寫類整理筆記 Dot類

    AS3自寫類整理筆記 Dot類

    拖拽物體1和物體2,就可以看到效果了 index.base.geom.Dot類講解 基本功能:記錄xy兩點
    2008-06-06
  • Actionscript 3.0中Singleton實現(xiàn) 修正篇

    Actionscript 3.0中Singleton實現(xiàn) 修正篇

    說明:上一篇"一個簡單的Actionscript的單態(tài)模式類"的實現(xiàn)在Actionscript中報錯,具體原因會在這篇Blog中詳細說明。
    2009-02-02

最新評論