恶汉式特点:类加载时不创建对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()//对数据进行可控。
{
return s;
}
}
懒汉式特点:类加载时不创建对象。会节省内存空间。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
开发时建议用饿汉式:
1、因为写单例是要用对象,所以先加载和后加载没有区别。
2、懒汉式会设计安全问题。
在面试时一般会面试懒汉式,因为懒汉式设计了安全问题。作者: 崔政 时间: 2012-10-18 23:32
楼上那位仁兄比喻的十分恰当。
饿汉式是不管有人没人先做饭,懒汉式是有人吃再做饭。
饿汉式比较占用资源。
作者: 徐升兴 时间: 2012-10-19 08:31
lz你好,这是我总结的毕老师关于单例的讲解,希望对你有帮助。
****************************************************
1,单例模式存在的原因:为保证对象的唯一性,使一个类在内存中只存在一个对象。
2,单例模式的两种写法:
饿汉式:
class Single
{
private Single(){};
private Single s = new Single();
public static getSingle(){
return s ;
}
}
*****************
懒汉式:
class Single
{
private Single(){};
private Single s = null;
public static getSingle(){
if(s==null)
s= new Single();
return s ;
}
}
3,两种模式的区别:简单说:开发用饿汉式,面试出懒汉式。
饿汉式在jvm运行的时候已经创建好对象,不必考虑安全问题;
懒汉式在第一次访问实例时才开始创建对象,需要同步。
ps:csdn博客上的话,我总结不了这么好啊,不过记住了。
********************************
4,懒汉式同步的方法:
class Single
{
private Single(){};
private Single s = null;
public static getSingle(){
if(s==null)
synchronized(Single.class){
if(s==null)
s= new Single();