单例设计模式:
它的出现为了可以保证一个类在内存中的对象唯一性。对于多个程序使用同一个配置信息对象时,必须要保证该对象的唯一性
单例设计的思想
1、不允许其他程序用new创建该类对象。
2、在该类中创建一个本类实例。
3、对外提供一个方法让其他程序可以获取该类对象
步骤:
1、私有化该类的构造函数
2、通过new在本类中创建一个本类对象。
3、在对外提供一个方法让其他程序可以获取该类对象。
单例设计模式一般有两种常用
饿汉式:一般用于开发
class Single//类一加载对象就已经存在了。
{
private static Single s=new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
懒汉式:
class Single2//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
//延迟加载形式
{
private static Single2 s=null;
private Single2(){}
public static Single2 getInstance()
{
if (s==null)
{
s=new Single2();
return s;
}
}
}
懒汉式比饿汉式更省内存,因为不需要在一开始就创建对象,减少了内存的使用。
饿汉式无需关注多线程问题,因为一加载类就已经存在一个默认的静态对象,在多线程问题中不用关注同步锁问题,
而懒汉式由于是在方法中创建对象,那么在多线程当中就要加入synchronized同步锁,防止同时多个线程同时创建一个对象,
这是在java当中是不允许的。