Design patterns 单例设计模式

Design patterns 单例设计模式,design-patterns,Design Patterns,可能重复: 单例设计模式是为JVM创建单实例还是为应用程序创建单实例?单例设计模式通常在类级别实现,但也可以在应用程序级别实现。我相信一次只能运行一个JVM实例。单例设计模式通常在类级别实现,但也可以在应用程序级别实现。我相信一次只有一个JVM实例在运行。它是一个单一实例对应一个应用程序的运行实例。不过,应用程序的每个运行实例都将获得自己的JVM。因此,实际上,每个JVM都有自己的单例实例。一个单例实例对应一个正在运行的应用程序实例。不过,应用程序的每个运行实例都将获得自己的JVM。因此,实际

可能重复:


单例设计模式是为JVM创建单实例还是为应用程序创建单实例?

单例设计模式通常在类级别实现,但也可以在应用程序级别实现。我相信一次只能运行一个JVM实例。

单例设计模式通常在类级别实现,但也可以在应用程序级别实现。我相信一次只有一个JVM实例在运行。

它是一个单一实例对应一个应用程序的运行实例。不过,应用程序的每个运行实例都将获得自己的JVM。因此,实际上,每个JVM都有自己的单例实例。

一个单例实例对应一个正在运行的应用程序实例。不过,应用程序的每个运行实例都将获得自己的JVM。因此,实际上,每个JVM都有自己的单例实例。

您可能会找到这个。

您可能会找到这个。

每个正在运行的应用程序只有一个实例。

每个正在运行的应用程序只有一个实例。

问题还不清楚。什么是“应用程序”

Word或Excel等程序是应用程序,Apache web服务器也是应用程序之一

如果您有一些用Java实现的程序,通常每个程序都启动自己的JVM通常强调

您可以很容易地找到在同一JVM中运行多个应用程序的方法。例如,这是在“应用程序服务器”或“web服务器”/servlet容器中完成的

正如上面有人指出的:每个类装入器将有一个单例

在应用服务器/应用程序容器/web容器中,每个“应用程序”都有自己的类laoder asigned。因此,每个应用程序有一个单例(因为它的类装入器)


如果JVM上只有一个应用程序或者只有一个类加载器,那么显然只有一个单例。

问题还不清楚。什么是“应用程序”

Word或Excel等程序是应用程序,Apache web服务器也是应用程序之一

如果您有一些用Java实现的程序,通常每个程序都启动自己的JVM通常强调

您可以很容易地找到在同一JVM中运行多个应用程序的方法。例如,这是在“应用程序服务器”或“web服务器”/servlet容器中完成的

正如上面有人指出的:每个类装入器将有一个单例

在应用服务器/应用程序容器/web容器中,每个“应用程序”都有自己的类laoder asigned。因此,每个应用程序有一个单例(因为它的类装入器)


如果JVM上只有一个应用程序或只有一个类加载器,那么显然只有一个singleton。

singleton的实现基于创建一个类,该类具有一个方法(或.NET中的属性),该方法在该类尚不存在时创建该类的实例。类的构造函数必须是私有的,以防止以其他方式初始化


有关更多详细信息,我建议您阅读这篇

基于创建一个类的Singleton实现,该类具有一个方法(或.NET中的属性),如果还不存在该类的实例,该方法将创建该类的实例。类的构造函数必须是私有的,以防止以其他方式初始化


要了解更多细节,我建议您阅读这篇文章

我敢说每个类装入器一篇。两个独立的类加载器可以加载同一个类。我一直用静态加载器实现我的单例类,静态加载器决定是否给出了一个实例,所以你说的是真的;虽然我实现它的方式使它们是一样的。我敢说每个类装入器都有一个。两个独立的类加载器可以加载同一个类。我一直用静态加载器实现我的单例类,静态加载器决定是否给出了一个实例,所以你说的是真的;虽然我实现它的方式使它们是一样的。-1,这是错误的。术语应用程序不是在JVM中定义的,它不是。我使用与OP相同的术语进行回答。这个术语是否在JVM中定义并不重要,只要OP知道他的意思。请记住,如果答案是专门针对所问问题而不是针对所有人的,则答案是正确的。而
为JVM创建单个实例
为应用程序创建单个实例
之间的区别非常大。尽管如此,这是错误的,您在这里的解释也没有任何意义。singleton是每个类加载器只有一个对象的实例,而不是每个应用程序(不管是什么)或每个JVM。-1,这是错误的。术语应用程序不是在JVM中定义的,它不是。我使用与OP相同的术语进行回答。这个术语是否在JVM中定义并不重要,只要OP知道他的意思。请记住,如果答案是专门针对所问问题而不是针对所有人的,则答案是正确的。而
为JVM创建单个实例
为应用程序创建单个实例
之间的区别非常大。尽管如此,这是错误的,您在这里的解释也没有任何意义。单例是每个类加载器只有一个对象的实例,而不是每个应用程序(不管是什么)或每个JVM。