最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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,所以也就"理所當然"地這樣寫了(還是應(yīng)該好好重視每種編程語言的基礎(chǔ),雖然都是標準的OO語言,但應(yīng)該還是各有自己的特色的,不然也就沒吸引力了)。既然這樣,我們就無法保證用戶不用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)文章

  • AS3自寫類整理筆記:ByteLoader類

    AS3自寫類整理筆記:ByteLoader類

    該類的主要功能是把swf,jpg,png,gif等文件以字節(jié)的形式加載進來 以便于使用Loader.loadBytes方法,重復加載使用素材 如果圖片格式為jpg,并且是漸進式格式j(luò)peg,那么該類還可以幫助你邊加載邊顯示
    2008-06-06
  • as3 rollOver or mouseOver使用說明

    as3 rollOver or mouseOver使用說明

    rollOver與mouseOver同樣在鼠標移到目標上時觸發(fā)事件,細微區(qū)別在于,mouseOver的bubbles等于true,而rollOver的bubbles是false.
    2009-10-10
  • AS3自寫類整理筆記 ClassLoader類

    AS3自寫類整理筆記 ClassLoader類

    在用flash做項目的時候,把一些元件,通過設(shè)置鏈接類,然后使用這個類,通過getClass方法即可把這個素材拿下來
    2008-06-06
  • 火山動態(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中Singleton實現(xiàn) 修正篇

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

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

    Actionscript 3.0 鼠標事件

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

    AS3自寫類整理筆記 Dot類

    拖拽物體1和物體2,就可以看到效果了 index.base.geom.Dot類講解 基本功能:記錄xy兩點
    2008-06-06
  • flash PureMVC 使用例子

    flash PureMVC 使用例子

    昨天下了PureMVC, 看了一天文檔, 迷茫啊, 找例子也沒找到, 后來破解了一個看了一下, 大概地寫了一個簡單的用例, 先算是學習筆記吧, 先把這最簡單的例子做法寫一下吧( 也不知道這種理解是否正確哦~~汗一個!)
    2009-01-01
  • AS3打開新窗口不被屏蔽的代碼

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

    有時候flash打開的網(wǎng)址會出現(xiàn)被屏蔽的現(xiàn)象,如何能輕松的打開而不被屏蔽呢,下面是具體的代碼。
    2010-08-08
  • 編寫高效率的AS3代碼的小技巧

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

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

最新評論

张家口市| 朝阳区| 太湖县| 清新县| 饶阳县| 泸定县| 阳信县| 科技| 盐源县| 阜城县| 汪清县| 虹口区| 黔西| 宿州市| 正镶白旗| 黄山市| 大安市| 班玛县| 安溪县| 贵州省| 仙游县| 香河县| 铁岭县| 揭东县| 巴林右旗| 龙南县| 东海县| 盐边县| 海丰县| 黎川县| 鄂尔多斯市| 樟树市| 西昌市| 东乡| 和龙市| 江阴市| 凌云县| 自贡市| 邳州市| 合川市| 彭州市|