2012-05-11 39 views
0

假設我有一個類中的靜態變量:靜態變量一生

class Example { 
    public static var one:One = new One; 
} 

威爾「一」我程序啓動(即使我從來沒有使用它)被實例化,或者只是在第一時間我用它?

回答

1

我想,如果你問的問題,那是因爲你只需要創建的對象,如果你使用它。在這種情況下,你應該做的是實現對象的惰性創建。類似的東西會工作:

class Example { 

    private static var one_:One = null; 

    public static function get one():One { 
     if (!one_) one_ = new One(); 
     return one_; 
    } 

    // If the variable is not read-only, you also need a setter: 
    public static function set one(v:One):void { 
     one_ = v; 
    } 

} 

現在你確信,如果你直接引用它在代碼中使用Example.oneone,纔會創建。

+0

一個簡單的單身人士吧?我聽說過使用Singleton並不是一個好習慣。但我不明白爲什麼。 – Fabricio

+1

有沒有一般的規則,這取決於你想要做什麼。但是,這不是一個單例模式,只是一個靜態變量(根據您的需要,這也可能是一個好主意,也可能不是一個好主意)。 –

0

你第一次使用類Example

0

它會在啓動。但是這個班級應該有「聯繫」。

  • 這個類直接利用某處代碼
  • 你有imports與此類

所以,如果這個類編譯的,它會在啓動時實例化。

糾正我,如果我錯了。

其實它真的很容易測試:)