Java中的单例模式实现

时间:2013-09-27 15:25:05

标签: java design-patterns singleton

最近我在接受采访时被问到:你如何在Java中实现Singleton设计模式?

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

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

private static Logger logger;

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

2)实现限制实例的实例控制器:

public class LoggerWrapper {
        private static Logger instance = null;

        private LoggerWrapper() {       }

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

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

1 个答案:

答案 0 :(得分:1)

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

请注意,LOT problems有单身人士,你应该在实施之前仔细思考。