有没有办法让它像一个模板单例类,这样当你扩展它的时候,扩展的类也是一个单例类,这样我就可以通过扩展模板单例类来快速创建一个新的单例类?如果重要的话,我正在使用ActionScript 3.0。
谢谢。
发布于 2009-04-27 13:42:52
单例模式的设计方式是不应继承该类型。我不熟悉ActionScript,但是拥有一个也可以扩展的单例类型似乎是一个错误。
如果要这样做,则意味着父类型和子类型都可以将其单个实例加载到同一应用程序中。由于这些类型在多态上属于Parent类型,因此从技术上讲,Parent不再是单例类型。
发布于 2009-04-27 13:43:59
首先,我再怎么强调这一点也不为过--确保你使用的单例不是Singleton as an antipattern。
我对ActionScript的了解还不够多,无法明智地评论它,但通常情况下,单例实例是作为静态变量存储在类中的。这意味着您的子类将从父类继承静态变量,从而继承实例!因此,考虑到这一点,您将无法创建一个insta-singleton。
然而,你可以做的一件事就是做一个单例接口,如果你所有的单例都需要一个通用的功能集,比如一个干净卸载的析构函数,等等。任何其他的方法都可以让它工作(我能想到几个)--我不确定我告诉你是否合乎道德,因为单例最好是稀疏使用(IMHO)。
发布于 2009-04-28 12:31:37
flex框架将此模式用于多个管理器。
如果你看一下mx.core.Singleton的Flex代码,它的工作方式是维护一个从类名到该类实例的映射。因此,在为单例创建第一个实例之前,您可以创建层次结构中任何类的实例。
https://stackoverflow.com/questions/793507
复制相似问题