在实际应用中使用Singleton Pattern的确切位置是什么?

swa*_*ati 42 java singleton

我只是好奇使用单身模式...我知道模式是如何工作的以及它可以在哪里使用但我个人从未在任何实际应用中使用过.有人可以给出一个可以使用它的例子.如果有人可以解释它们在实际应用中的使用方式和位置,我真的很感激.谢谢,斯瓦蒂

Jon*_*eet 58

通常,单体用于全局配置.最简单的例子是LogManager- 有一个静态LogManager.getLogManager()方法,并使用一个全局实例.

事实上,这不是一个"真正的"单例,因为你可以从中派生自己的类LogManager并以这种方式创建额外的实例 - 但它通常用作单例.

另一个例子是java.lang.Runtime- 来自文档:

每个Java应用程序都有一个Runtime类实例,它允许应用程序与运行应用程序的环境进行交互.可以从getRuntime方法获取当前运行时.

这几乎是单身人士的定义:)

现在单身人士模式在这些日子里大部分都是皱眉头 - 它引入了紧密耦合,并且使得使用单例的东西更难以测试,因为你不能轻易地模拟出那个组件.如果没有它就能逃脱,那就更好了.尽可能地注入您的依赖项.

  • @ swati-你有Guru的回应......你应该接受这个答案.:) (4认同)

Man*_*ous 12

我在在线足球队商店系统中使用了单身模式.我们将单例模式应用于ShoppingCart类.

每个应用程序实例只需要一个购物车实例.所以单身人士似乎最适合这种情况.

  • @Vinay Bro 如果多个用户正在使用足球队商店,则意味着多个实例,但每个用户只有一个实例。想象一下,每个用户都将使用自己的计算机访问商店,对吗?所以购物车将分别是每个用户的一个实例。每个用户都有他的实例,在该实例中,购物车对象将是一个。 (3认同)

Flo*_*ian 11

一些例子:

  • 硬件访问
  • 数据库连接
  • 配置文件


小智 5

考虑以Singleton Pattern设计的AudioDriverService的情况。因此,我们只允许创建一个AudioDriverService类的实例。现在,实际上您的Windows Media Player或Youtube Player都将共享AudioDriverService的同一对象,而不是创建新实例。