-->

什么是单身类? 它可以帮助我,因为两个相关的服务运行的类的单一实例?(what is a sin

2019-08-17 01:24发布

这听起来复杂,但我会问反正:

我运行它使用X类进行服务 。 我要开始它采用类A除了新类另一个服务B。

服务A已经在运行。 我做服务B的热部署。

这里是真正的问题 -将服务B使用类X或一个单独的实例相同的实例。 如何Singleton类帮助我在这里?

Answer 1:

每个服务将在它自己的操作系统(OS)进程空间中运行,并且每个进程空间都有它自己的类的实例。 A“单”类使用的一类静态字段,这将是本地的代码中正在运行的进程空间正常编码,所以不,他们不会分享单身。 每个将获得它自己的实例。

你可以做,你正在尝试做的,但是使用一些外部共享同步过程中,(例如,露出了单过任何java的equivilent是.NET远程(或WCF) - 网络曝光被编码使用端点一个Singleton,并同时拥有您服务“连接到”,并使用该远程访问辛格尔顿)



Answer 2:

我不熟悉如何Java Web服务的运行细节,但如果他们都在同一个虚拟机中运行那么我认为阶级的则横跨在VM和静态字段所有应用程序共享会因此被共享。 由于Singleton模式通常是由单个实例附接至静止构件来实现,该单件将被共享。

这基于: 清洁代码会谈- “全球国家和单身”

您应该能够通过写两个简单的Web服务来测试它。 一个没有东西单身,如设置一个标志,另一个检查它。



文章来源: what is a singleton class? Can it help me running single instance of a class for two related services?