java - Java中的单例模式实现

标签 java design-patterns singleton

<分区>

我最近在面试中被问到:你如何在 Java 中实现单例设计模式?

我有点困惑,因为有两个选项:

1) 只有一个静态数据成员。静态成员,例如

private static Logger logger;

将确保在给定类的所有对象之间只共享一个记录器。

2) 实现一个限制实例的实例 Controller :

public class LoggerWrapper {
        private static Logger instance = null;

        private LoggerWrapper() {       }

        public static Logger getInstance() {
                if (instance == null) {
                        instance = new Logger ();
                }
                return instance;
        }
}

这两种单例方法有什么区别?

最佳答案

第一个在你的课外是不可访问的。第二个可以由声明它的类以外的类使用。正如 Sotirios Delimanolis 所指出的,实例需要是静态的,以便静态 getInstance() 方法可以访问它,确保所有调用者获得相同的版本。

请注意,有一个 LOTproblems与单例,你应该在实现之前认真考虑。

关于java - Java中的单例模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054490/

相关文章:

java - 每次java.lang.exception.getCause()都为null

java - 在 Java 中显示 TIFF 图像

c# - 关于Singleton C#的两个问题

java - 微服务中的事务

java - 装饰对象,以便您可以轻松添加/删除功能

java - Spring框架支持什么版本的stomp

java - Linux 上的 Intellij : Menu: jdk > javap option

java - Spring Singleton VS Singleton 设计模式——类加载器

PHP 命名空间和单例问题

基于 C++ shared_ptr 的单例是什么导致链接错误?