为什么Logger单身不是静态的?

时间:2018-02-05 21:21:32

标签: java logging design-patterns

我正在网上阅读一些关于singleton vs static class的资料。其中一些人提到如果类不维护状态,则应该使用静态类而不是单例。但是,据我所知,Logger类是单例而非静态类。但我没有看到它实际上在这里维持的任何状态。我错了吗?或者我没看到的任何东西?提前谢谢。

1 个答案:

答案 0 :(得分:0)

基本上单例是一种设计模式,它本质上是一种静态实现。

  • Singleton by it的定义只强制您只能拥有给定对象的单个实例。当您希望将函数组合成可以从多个位置重用的类时,这非常有用。 同样在这种情况下,您的单例类可以具有状态,可以替换,可以删除,重新创建等。
  • 当谈到静态时,你只能通过JVM获得其中一个,你不能轻易地替换它,正如你所提到的,不建议向它们分配状态(尽管有办法做到这一点)。

一般来说,我不喜欢在同一个代码库中引入两个单例实现,但通常的惯例是只使用静态,如果你实现某种库函数,如add(a,b),并且更喜欢使用单例作为bean ,业务逻辑等。