单例模式
顾名思义,该对象在jvm虚拟机中只会存在一个实例。
该设计模式旨在减少多余实力对象对内存的占用,减少GC回收内存产生的性能消耗
单例模式的实现方式简而言之就是私有化构造方法,使用静态方法提供实例。
log4j
Spring的bean默认也是单例创建的
代码:
饿汉式:
public class Lover{
private static Lover lover = new Lover();
private Lover(){}
public static Lover getInstance(){
return lover;
}
}
懒汉式:
public class Lover{
private static Lover lover = null;
private Lover(){}
public static Lover getInstance(){
if(null == lover){
return new lover();
}
return lover;
}
}
线程安全的单例模式:
public class Lover{
private static Lover lover = null;
private Lover(){}
public static Lover getInstance(){
if(null == lover){
synchronized(this){
if(null == lover){
return new Lover();
}
}
}
return lover;
}
}
《java并发编程实战》中推荐的单例模式实现方式:
public class Lover(){
private static class LoverCreater{
final static instance = new Lover();
}
public static Lover getInstance(){
return LoverCreater.instance;
}
}