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

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

 更新時(shí)間:2009年02月16日 12:38:03   作者:  
說(shuō)明:上一篇"一個(gè)簡(jiǎn)單的Actionscript的單態(tài)模式類"的實(shí)現(xiàn)在Actionscript中報(bào)錯(cuò),具體原因會(huì)在這篇Blog中詳細(xì)說(shuō)明。
在前面的blog中,代碼如下:
復(fù)制代碼 代碼如下:

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會(huì)出現(xiàn)1153:A constructor can only be declared public.錯(cuò)誤,錯(cuò)誤原因在錯(cuò)誤描述語(yǔ)句描述的很清楚,也就是Constructor在Actionscript中只能聲明為public。而我當(dāng)時(shí)寫(xiě)的時(shí)候,犯了習(xí)慣性的錯(cuò)誤,因?yàn)槲覍W(xué)習(xí)的C++和C#中寫(xiě)singleton pattern總是將constructor聲明為protected或者private,所以也就"理所當(dāng)然"地這樣寫(xiě)了(還是應(yīng)該好好重視每種編程語(yǔ)言的基礎(chǔ),雖然都是標(biāo)準(zhǔn)的OO語(yǔ)言,但應(yīng)該還是各有自己的特色的,不然也就沒(méi)吸引力了)。既然這樣,我們就無(wú)法保證用戶不用new來(lái)創(chuàng)建singleton class對(duì)象了,在我思考中,同QQ群上一位網(wǎng)友討論了哈,他給我推薦了一種解決方案,如下:
復(fù)制代碼 代碼如下:

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

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

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

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: 順便附上一張電子書(shū)中關(guān)于Actionscript 3中Singleton Pattern Class講解的照片,如下:
Actionscript 3 Singleton Pattern Class

相關(guān)文章

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

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

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

    ActionScript 3.0 編程體驗(yàn)

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

    as3 rollOver or mouseOver使用說(shuō)明

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

    AS3 navigateToURL導(dǎo)致ExternalInterface 執(zhí)行失敗問(wèn)題

    AS3 navigateToURL導(dǎo)致ExternalInterface 執(zhí)行失敗問(wèn)題
    2009-02-02
  • 編寫(xiě)高效率的AS3代碼的小技巧

    編寫(xiě)高效率的AS3代碼的小技巧

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

    Actionscript 3.0 鼠標(biāo)事件

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

    AS3打開(kāi)新窗口不被屏蔽的代碼

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

    AS3中的反射(速記) 分析

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

    AS3自寫(xiě)類整理筆記 Dot類

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

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

    說(shuō)明:上一篇"一個(gè)簡(jiǎn)單的Actionscript的單態(tài)模式類"的實(shí)現(xiàn)在Actionscript中報(bào)錯(cuò),具體原因會(huì)在這篇Blog中詳細(xì)說(shuō)明。
    2009-02-02

最新評(píng)論