Java面试题:怎样实现Singleton模式编程

高小东 发布于 2011/03/04 13:43
阅读 1K+
收藏 4

Java面试题:怎样实现Singleton模式编程
【考题题干】请编写一个Singleton模式的程序
【试题分析】
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收。
一般Singleton模式通常的形式为:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

更多java面试题,java电子书,java 教学视频请参考"爱学网izixue"

【参考答案】(2种实现方法,取一即可)
package programe;
public class Singleton {
        private Singleton() {
        }
        // 注意这是private 只供内部调用
        private final static Singleton instance = new Singleton();
        // 这里提供了一个供外部访问本class的静态方法,可以直接访问
        public static Singleton getInstance() {
                return instance;
                }
        }
或者:
package programe;
public class Singleton {
        private static Singleton instance = null;
        public static synchronized Singleton getInstance() {
                // 使用时生成实例,提高了效率!
                if (instance == null)
                        instance = new Singleton();
                return instance;
        }
}

加载中
0
于忠达
于忠达

我的眼睛自动忽略任何推销广告话语,强吧?

0
RainJ
RainJ

第二个方法居然没有似有的构造方法,这个很纠结 。。。

太容易给人错觉了!~~~

0
xyz555
xyz555

直接使用静态类不好?以下来自jME的FastMath.java

final public class FastMath {

    private FastMath(){}

    /** A "close to zero" double epsilon value for use*/
    public static final double DBL_EPSILON = 2.220446049250313E-16d;

    /** A "close to zero" float epsilon value for use*/
    public static final float FLT_EPSILON = 1.1920928955078125E-7f;
    
    .......

     public static boolean isPowerOfTwo(int number) {
        return (number > 0) && (number & (number - 1)) == 0;
    }

     ......
}
0
xu81.com
xu81.com

如果不是2楼说 我又专门拖上去看了一遍才发现有广告,LZ的广告打的不够专业

0
叫我蝴蝶吧
叫我蝴蝶吧

还是2楼强,我也没发现!!!

0
laserdance
laserdance
public class Singleton{
    
    private Singleton(){
 //..........
}
static class SingletonHolder{
    private static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
      return SingletonHolder.instance;
}
}
0
戴威
戴威

晕倒了,经过2L提醒发现果然有广告

难道2L也是一伙的?

0
叫我蝴蝶吧
叫我蝴蝶吧

8楼好强大的气场~名字牛,头像更牛,小弟给你拜天地了~~

0
该用户已被和谐
该用户已被和谐

2楼火眼金睛啊!我说咋回事呢....还纳闷呢..。

返回顶部
顶部