单例模式代码3步骤:1.将构造方法私有化。 2.在类中创建一个本类对象。 3.提供一个方法可以获取该类对象。
单例模式分三种:懒汉式单例、饿汉式单例、登记式单例,我主要比较饿汉式与懒汉式的区别:从线程安全角度来说,赖汉时线程不安全,恶汉式线程安全。下面把懒汉式改成线程安全。
饿汉式关键代码:
public class Singal
{
//将构造方法私有化
private Singal() {}
//在类中创建一个本类对象
private static Singal single = new Singal();
//提供一个方法可以获取该类对象
public static Singal getInstance()
{
return single;
}
}
懒汉式单例代码:
public class Singal {
private static Singal single=null;
private Singleton() {}
public static Singal getInstance() {
if (single == null) {
single = new Singal();
}
return single;
}
}
懒汉式线程安全代码:
public class Singal
{
private static Singal single=null;
private Singleton() {}
public static Singal getInstance()
{
if(singal == null)
{
synchronized(Singal.class)
if(singal == null)
{
singal = new Singal;
}
}
}
}
|
|