黑马程序员技术交流社区
标题:
浅析SINGTON
[打印本页]
作者:
彭小康
时间:
2013-3-5 13:18
标题:
浅析SINGTON
定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
如果换一种形式,如何处理
作者:
杨杨
时间:
2013-3-5 15:48
你敲的代码像单例 这样 定义就是 不让外部用这个类的时候用new 因为经常用这个类的对象 new一次就可以了 ,以后可以用静态方法直接返回, 这样可以节省内存
作者:
吴硕
时间:
2013-3-5 20:18
本帖最后由 吴硕 于 2013-3-5 20:19 编辑
你写的恶汉式单例,另外一种形式是懒汉式单例,如下:
/*
懒汉式最好解决方案
*/
public class Singleton
{
private Singleton() {}
private static Singleton instance = null;
public static Singleton getInstance()
{
//如果为null,就不用再进入同步代码块以提高效率
if(instance == null)
{
//同步代码块,保证多线程环境下也只会产生一个对象
synchronized(Singleton.class)
{
if(instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2