• 设计模式--单件模式 - [设计模式]

    2009-08-11

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://bigsnail.blogbus.com/logs/43955807.html

    单件模式: 保证一个类有且仅有一个实例,并提供一个供全局的访问方法。

     

    AS3中类的构造函数不能private,所以实现单件模式需要变通一下.单件模式在as3中的实现概括的说就是在class内再建一个只有该class自己内访问的空类作为newclass的入口参数,这样只有class自己才能new自己,任何外界都不能new,其次通过getInstance返回一个静态的对象,作为全局唯一的。

     

    平时用到单件模式的情况:比如单人游戏中的HERO,全局必须保证最多一个HERO.在常用的应用软件中ALERT组件(比如警告框),一旦弹出,必须要用户确定这个时候不能有其他操作.

    <code>

    ActionScript 3语言: Codee#7198
    package
    {
       public class SingleClass
       {
          private static var SINGLE:SingleClass;
          public   var test:uint = 0;
          public function SingleClass(p:Private)
          {
              if(p==null) throw new Error("单件模式,只能用getInstance()方法获取");
          }
          public static function getInstance():SingleClass
          {
             if(SINGLE==null) SINGLE = new SingleClass(new Private());
             return SINGLE;
          }
       }
    }
    class Private{}

    测试

    ActionScript 3语言: Codee#7199
    package
    {
       import flash.display.Sprite;
       public class SinglePatten extends Sprite
       {
          public function SinglePatten()
          {
             var a:SingleClass = SingleClass.getInstance();
             trace(a.test);//输出0
             a.test = 200;
             var b:SingleClass = SingleClass.getInstance();
             trace(b.test);//输出200 a其实是同一个实例
          }
       }
    }

     

    :

    收藏到:Del.icio.us