AS 不行?

浮尘过往 2009-02-13
superdandy 写道
我晕了。 Flex中是不允许私有的构造方法的。 即便你用了getInstance()这种看上去好像是单体模式的东西,别人一样可以new 一个ModelLocator的。 得想别的办法,比如说内部类什么的。 总之是没有什么太好地解决办法的。


有办法的,可以采用给构造函数添加单实例的参数达到单实例的目的。
比如
package
{
public class a
{
   private static var _instance:a;
   public a(singleArg:SingleArg):void
   {
   }
   public static function getInstance():a
   {
      if (_instance)
      {
         var singlearg:SingleArg = new SingleArg();
         _instance = new a(singlearg);
      }
      return _instance;
   }
}
class singleArg
{
   singleArg();
}
}
superdandy 2009-02-15
浮尘过往 写道
superdandy 写道
我晕了。 Flex中是不允许私有的构造方法的。 即便你用了getInstance()这种看上去好像是单体模式的东西,别人一样可以new 一个ModelLocator的。 得想别的办法,比如说内部类什么的。 总之是没有什么太好地解决办法的。


有办法的,可以采用给构造函数添加单实例的参数达到单实例的目的。
比如
package
{
public class a
{
   private static var _instance:a;
   public a(singleArg:SingleArg):void
   {
   }
   public static function getInstance():a
   {
      if (_instance)
      {
         var singlearg:SingleArg = new SingleArg();
         _instance = new a(singlearg);
      }
      return _instance;
   }
}
class singleArg
{
   singleArg();
}
}


谢谢提醒。 这正是我之前想说的方法。 不过,在一个文件里边写两个类,总觉得还是…… 总之还是比较奇怪的。
Global site tag (gtag.js) - Google Analytics