一:静态内部类实现单例模式
原理:通过一个静态内部类定义一个静态变量来持有当前类实例,在类加载时就创建好,在使用时获取。
缺点:无法做到延迟创建对象,在类加载时进行创建会导致初始化时间变长。
public classSingletonInner {private static classHolder {private static SingletonInner singleton = newSingletonInner();
}privateSingletonInner(){}public staticSingletonInner getSingleton(){returnHolder.singleton;
}
二:饿汉模式
原理:创建好一个静态变量,每次要用时直接返回。
缺点:无法做到延迟创建对象,在类加载时进行创建会导致初始化时间变长。
public classSingletonHungry {private static SingletonHungry instance = newSingletonHungry();privateSingletonHungry() {
}public staticSingletonHungry getInstance() {returninstance;
}
三:懒汉模式
原理:延迟创建,在第一次用时才创建,之后每次用到就返回创建好的。
缺点:由于synchronized的存在,多线程时效率很低。
public classSingletonLazy {private static volatileSingletonLazy in