ActionScript 3.0 實現單態模式

來源:互聯網
上載者:User

單態模式可以保證一個類只有一個執行個體存在,一般情況下,單態模式可以由以下方式實現:

class Singleton {  private static instance:Singleton;    private function Singleton(){}  public static getInstance():Singleton{  //使用時產生執行個體!  if (instance==null)      instance=new Singleton();      return instance;     }}//使用Singleton.getInstance()可以訪問單態類。

但是ActionScript 3.0不支援私人的建構函式,所以我們要採用其他折衷的方法實現私人的建構函式——包外類。

【包外類】

通常情況下,一個.as類檔案package{}內只可以定義一個類,而且必須與檔案名稱相同,這個類對外是可見的,而在package{}還可以定義多個類,這些類與檔案名稱不同,並且只有當前類檔案的成員類可以訪問,這種類,我們稱為包外類,包外類可以看成當前類的“私人類”。

通過包外類,我們可以採用下面的方法實現單態模式:

package  {/** * ... * @author 橡樹小屋 * 單態模式,返回一個音樂播放的執行個體 */public class Tuner{private static var _instance:Tuner;public function Tuner(pvt:privateClass) {}public  static function getInstance():Tuner {if (Tuner._instance==null) {Tuner._instance = new Tuner(new privateClass());trace("執行個體化一個tuner執行個體");}return Tuner._instance;}}}//包外類,只有這個包的類可以訪問,其他類檔案無法訪問。實現私人類class privateClass {public function privateClass() {trace("私人類被響應");}}

public function Tuner(pvt:privateClass) {},通過私人類的參數,保證外部不能通過建構函式執行個體化Tuner,因為pvt:privateClass是私人類,外部不能訪問。這樣就可以曲線實現私人的建構函式功能了。

 

參考資料:《ActionScript 3.0設計模式》《ActionScript 3.0 殿堂之路》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.