单例模式
简介:单例模式也是创建性设计模式的一种,是最简单的一种设计模式。这种设计模式保证一个类只有一个实体对象,而且只能他自己创建对象,整个过程只涉及这一个类。他提供一个私有的构造器,外部获取其实体对象时,调用其提供的获取对象的方式getIntance()
几种单例模式实例:
懒汉模式
public class SingleObject {
private static SingleObject singleObject= null;
private SingleObject(){}
public static SingleObject getInstance(){
if(singleObject==null){
singleObject = new SingleObject();
}
return singleObject;
}
}
缺点:多线程访问时不安全,在多线程下不能正常工作
饿汉模式
public class SingleObject {
private static SingleObject singleObject= new SingleObject();
private SingleObject(){}
public static SingleObject getInstance(){
return singleObject;
}
}
缺点:可能造成内存垃圾,因为SingleObject是类加载时被创建的
优点:线程安全
线程安全的懒汉模式
public class SingleObject {
private static SingleObject singleObject= null;
private SingleObject(){}
public static synchronized SingleObject getInstance(){
if(singleObject==null){
singleObject = new SingleObject();
}
return singleObject;
}
}
缺点:性能低,再不是频繁访问时推荐使用
优点:线程安全,不会造成内存垃圾
登记式(使用静态内部类)
public class SingleObject {
private static class SingleObjectHolder{
private static SingleObject singleObject= new SingleObject();
}
private SingleObject(){}
public static synchronized SingleObject getInstance(){
return SingleObjectHolder.singleObject;
}
}
优点:使用静态内部类实现懒加载,既不会造成内存垃圾,而且静态属性只有一份,保证线程安全