Actionscript 3 扩展单例类?

Actionscript 3 扩展单例类?,actionscript-3,oop,singleton,Actionscript 3,Oop,Singleton,有没有一种方法可以使它像一个模板单例类,这样当你扩展它时,扩展的类也是一个单例类,这样我就可以快速创建一个新的单例类,就像我扩展模板单例类一样?我正在使用ActionScript3.0,如果有必要的话 谢谢。单例模式的设计方式不应继承该类型。我不熟悉ActionScript,但拥有一个也可以扩展的单例类型似乎是一个错误 如果要这样做,则意味着父类型和子类型都可以将其单个实例加载到同一应用程序中。由于这些类型在多态性上属于类型Parent,Parent从技术上讲将不再是单例模式。单例模式的设计方式

有没有一种方法可以使它像一个模板单例类,这样当你扩展它时,扩展的类也是一个单例类,这样我就可以快速创建一个新的单例类,就像我扩展模板单例类一样?我正在使用ActionScript3.0,如果有必要的话


谢谢。

单例模式的设计方式不应继承该类型。我不熟悉ActionScript,但拥有一个也可以扩展的单例类型似乎是一个错误


如果要这样做,则意味着父类型和子类型都可以将其单个实例加载到同一应用程序中。由于这些类型在多态性上属于类型
Parent
Parent
从技术上讲将不再是单例模式。

单例模式的设计方式应确保不应继承该类型。我不熟悉ActionScript,但拥有一个也可以扩展的单例类型似乎是一个错误


如果要这样做,则意味着父类型和子类型都可以将其单个实例加载到同一应用程序中。由于这些类型在多态性上属于类型
Parent
Parent
从技术上讲将不再是一个单例。

首先,我再强调也不为过——请确保您使用的单例不是唯一的

我对ActionScript了解不够,无法对其进行智能评论,但通常情况下,单例实例作为静态变量存储在类中。这意味着子类将继承父类的静态变量,从而继承实例!因此,考虑到这一点,您将无法制作insta singleton


然而,你可以做的一件事是制作一个单例接口,如果你所有的单例都需要一套通用的功能,比如用于干净卸载的析构函数,等等。任何其他的黑客都可以做到这一点(我可以想出一些)-我不确定我告诉你是否合乎道德,因为单例最好少用(IMHO)。

首先,我再怎么强调也不为过——确保你使用的是单例

我对ActionScript了解不够,无法对其进行智能评论,但通常情况下,单例实例作为静态变量存储在类中。这意味着子类将继承父类的静态变量,从而继承实例!因此,考虑到这一点,您将无法制作insta singleton


然而,你可以做的一件事是制作一个单例接口,如果你所有的单例都需要一组通用的功能,比如用于干净卸载的析构函数,等等。任何其他的黑客都可以做到这一点(我可以想出一些)-我不确定我告诉你是否合乎道德,因为单例使用得比较少(IMHO).

与任何其他类一样,单例在类中定义,您可以根据需要对其进行扩展(从中继承)。单例的要点是只实例化一次,它与继承无关


问题是这样做方便吗?如果您尝试,您会发现您需要重新实现(重写)基类中定义的大多数行为。你不妨从头开始新的课程。更好的方法是创建一个定义所需行为的单例接口。

单例与任何其他类一样在类中定义,您可以根据需要对其进行扩展(继承)。单例的要点是只实例化一次,它与继承无关


问题是这样做方便吗?如果您尝试,您会发现您需要重新实现(重写)基类中定义的大多数行为。你不妨从头开始新的课程。更好的方法是创建一个定义所需行为的单例接口。

flex框架将此模式用于多个管理器


如果您查看mx.core.Singleton的Flex代码,它的工作原理是维护类名到该类实例的映射。因此,在为singleton创建第一个实例之前,您可以创建层次结构中任何类的实例。

flex框架将此模式用于多个管理器


如果您查看mx.core.Singleton的Flex代码,它的工作原理是维护类名到该类实例的映射。因此,在为singleton创建第一个实例之前,您可以创建层次结构中任何类的实例。

在Java中,在singleton类中,构造函数是私有的!所以,如果类X有一个私有构造函数,如果你试图在类Y中对它进行子类化,编译器会说它不能调用X类的super()构造函数,因为它没有公共可见性。所以在Java中,我们不能对一个单例子类进行分类,我想:/

在Java中,在单例类中,构造函数是私有的!所以,如果类X有一个私有构造函数,如果你试图在类Y中对它进行子类化,编译器会说它不能调用X类的super()构造函数,因为它没有公共可见性。所以在Java中,我们不能对单例进行子分类,我猜://

谢谢,我甚至从来没有考虑过多态性错误,我想你是对的。谢谢。“单例模式的设计方式是不应该继承该类型。”这根本不是真的。它被设计成只实例化一次。@Luke:你怎么能拥有一个只存在一个实例的类型,而这个类型又是其他类型的基类呢?这种“独生子女”类型的一个实例不是“独生子女”类型的第二个实例吗?@Andrew Hare:没有一种类型的独生子女。许多类型的对象可以是单例对象,一个应用程序可以同时使用多个单例对象。为什么不在基类中捕获单例行为?除了它没有